Repository of Presentation:
https://github.com/ArturSkowronski/naivechain-java
Presented:
Bielsko-Biała Java User Group (Bielsko-Biała JUG), Kraków, 22.02.2018 (https://www.meetup.com/pl-PL/Bielsko-Biala-JUG/events/247764157/)
Biorąc pod uwagę szalone skoki (i spadki) wszelkich kryptowalut, Blockchain jest na językach wszystkich developerów. Jednocześnie ilość mitów, klechd i legend jakimi obrósł osiągnęła już rozmiary które warto nieco uporządkować. W ramach tej prezentacji postaram się rozwiać niektóre z nich, a dodatkowo pokazać Blockchain od strony stricte programistycznej - w ramach sesji Live Codingu zaimplementujemy uproszczony, ale kompletny wariant Blockchaina, zbliżony do tego znanego z Bitcoina. Wszystko to używając naszej ulubionej Javy. Dodatkowo, postaram się wskazać jej wady i zalety i wytłumaczyć, dlaczego jak grzyby po deszczu zewsząd wyrastają alternatywne implementacje mające być lekiem na całe zło (i dlaczego zwykle nie są). Mam nadzieje uczynić całość interaktywną - jeżeli ktoś ma jakieś pytania będę się starał na nie odpowiedzieć podczas prezentacji. Moim celem jest żeby każdy wyszedł z lepszą świadomością tego czym Blockchain jest, a co nawet najważniejsze - czym z pewnością Blockchain nie jest. ___
Artur to developer z serduchem rozdartym między JVM (całościowo) i nowoczesnym JavaScript - przy czym. z bardziej dojrzałymi planami matrymonialnymi związanymi z tą pierwszą platformą.
Nie może się powstrzymać przed testowaniem nowych technologii, nawet jeśli czasem wybuchają mu w twarz w wyniku nadużycia w projektach szpachli i taśmy klejącej.
Obecnie członek zespołu VirtusLab realizujący projekty dla Tesco Technology.
Część Dynamicznego Duetu którego lepszą połową jest pluszowa foka (ᵔᴥᵔ).
What is a Blockchain?
Why do we need such technology? What can it do for us…
How does Blockchain work…
Python Implementation of a Blockchain.
Intro to IBM Hyperledger.
Use case scenarios and real world usage, besides digital money .
Even the LastPass Will be Stolen Deal with It!Martin Vigo
Password managers have become very popular as a solution to avoid reusing passwords. With that in mind, password managers are a prized target for pentesters and attackers. If a password manager is compromised, the consequences are catastrophic as all the victim's secrets reside in the vault. One breach to get it all.
LastPass is arguably one of the most popular password managers in the market. Over 10,000 corporate customers ranging in various sizes including Fortune 500's rely on LastPass to protect all their data.
Research has been done on how to attack password managers but it has all focused on leaking specific credentials from the vault. LastPass not only stores credentials, but also bank accounts, ssh keys, personal records, etc. Therefore, we focused our research on finding the silver bullet to gain full access to the vault and steal all the secrets. By reversing LastPass plugins, we found several ways to do so. We will demonstrate how it is possible to steal and decrypt the master password. We also found how it is possible to abuse account recovery to ultimately obtain the encryption key for the vault. In addition, we discovered ways to bypass 2 factor authentication.
We wrote a Metasploit module that takes care of all of this. The module is able to search for all LastPass data in the machine comprising all accounts present. It will find and decrypt the master password, it will derive the encryption key for the vault, it will find the 2FA trust token and it will steal the vault so it can be decrypted. All secrets in the vault will be printed out for the pen-tester's satisfaction.
apidays LIVE New York - WT* is JWT? by Maciej Trederapidays
apidays LIVE New York - API for Legacy Industries: Banking, Insurance, Healthcare and Retail
WT* is JWT?
Maciej Treder, Senior Software Development Engineer at Akamai Technologies
JSON Web Tokens, or JWTs, are a standardized way of representing a JSON-based data structure and transmitting it between two parties. JWTs rely on cryptographic signatures which ensure that the data transmitted in the JWT isn’t modified during transit. JWTs are designed to be extremely compact—small enough to be transmitted in an HTTP header, for example—and can be used in a variety of ways: as authorization tokens, client-side data storage, or even for the implementation of single sign on (SSO) solutions. They’re based on a very simple and elegant algorithm that’s easy to understand and quickly put to use. JWT implementations are available in virtually every programming language in common use for Web and mobile development.
Unfortunately, learning how to use JWTs can be complicated by the terminology that’s commonly used. “Claims,” “signatures,” “body,” “payload”—a large part of learning how JWTs work is deciphering these buzzwords and understanding how they map onto more familiar programming terms. This talk will focus on reducing this barrier to entry and making JWTs understandable to any programmer.
This talk will cover:
the structure of a JSON Web Token
the algorithm for generating one
available libraries and tooling
some common scenarios where JWTs can be used.
Particular emphasis will be given as to when and why JWTs provide for better solutions than other methods. Attendees should come away from this talk with a full understanding of how to use JWTs for a variety of purposes, and be ready and eager to put JWTs into use in both personal and professional contexts.
What is a Blockchain?
Why do we need such technology? What can it do for us…
How does Blockchain work…
Python Implementation of a Blockchain.
Intro to IBM Hyperledger.
Use case scenarios and real world usage, besides digital money .
Even the LastPass Will be Stolen Deal with It!Martin Vigo
Password managers have become very popular as a solution to avoid reusing passwords. With that in mind, password managers are a prized target for pentesters and attackers. If a password manager is compromised, the consequences are catastrophic as all the victim's secrets reside in the vault. One breach to get it all.
LastPass is arguably one of the most popular password managers in the market. Over 10,000 corporate customers ranging in various sizes including Fortune 500's rely on LastPass to protect all their data.
Research has been done on how to attack password managers but it has all focused on leaking specific credentials from the vault. LastPass not only stores credentials, but also bank accounts, ssh keys, personal records, etc. Therefore, we focused our research on finding the silver bullet to gain full access to the vault and steal all the secrets. By reversing LastPass plugins, we found several ways to do so. We will demonstrate how it is possible to steal and decrypt the master password. We also found how it is possible to abuse account recovery to ultimately obtain the encryption key for the vault. In addition, we discovered ways to bypass 2 factor authentication.
We wrote a Metasploit module that takes care of all of this. The module is able to search for all LastPass data in the machine comprising all accounts present. It will find and decrypt the master password, it will derive the encryption key for the vault, it will find the 2FA trust token and it will steal the vault so it can be decrypted. All secrets in the vault will be printed out for the pen-tester's satisfaction.
apidays LIVE New York - WT* is JWT? by Maciej Trederapidays
apidays LIVE New York - API for Legacy Industries: Banking, Insurance, Healthcare and Retail
WT* is JWT?
Maciej Treder, Senior Software Development Engineer at Akamai Technologies
JSON Web Tokens, or JWTs, are a standardized way of representing a JSON-based data structure and transmitting it between two parties. JWTs rely on cryptographic signatures which ensure that the data transmitted in the JWT isn’t modified during transit. JWTs are designed to be extremely compact—small enough to be transmitted in an HTTP header, for example—and can be used in a variety of ways: as authorization tokens, client-side data storage, or even for the implementation of single sign on (SSO) solutions. They’re based on a very simple and elegant algorithm that’s easy to understand and quickly put to use. JWT implementations are available in virtually every programming language in common use for Web and mobile development.
Unfortunately, learning how to use JWTs can be complicated by the terminology that’s commonly used. “Claims,” “signatures,” “body,” “payload”—a large part of learning how JWTs work is deciphering these buzzwords and understanding how they map onto more familiar programming terms. This talk will focus on reducing this barrier to entry and making JWTs understandable to any programmer.
This talk will cover:
the structure of a JSON Web Token
the algorithm for generating one
available libraries and tooling
some common scenarios where JWTs can be used.
Particular emphasis will be given as to when and why JWTs provide for better solutions than other methods. Attendees should come away from this talk with a full understanding of how to use JWTs for a variety of purposes, and be ready and eager to put JWTs into use in both personal and professional contexts.
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB
Encryption is not a new concept to MongoDB. Encryption may occur in-transit (with TLS) and at-rest (with the encrypted storage engine). But MongoDB 4.2 introduces support for Client Side Encryption, ensuring the most sensitive data is encrypted before ever leaving the client application. Even full access to your MongoDB servers is not enough to decrypt this data. And better yet, Client Side Encryption can be enabled at the "flick of a switch".
This session covers using Client Side Encryption in your applications. This includes the necessary setup, how to encrypt data without sacrificing queryability, and what trade-offs to expect.
How to run the blockchain.info Bitcoin wallet in NodeJS (experimental).
Dutch Blockchain Hackathon - Tech Deep Dive - 2016-12-07 in Delft
Presentation made with Deckset, source:
https://gist.github.com/Sjors/b39f1e4135c05e8dfe2cf337608ec7a8
Instructions:
https://github.com/blockchain/My-Wallet-V3/wiki/NodeJS
Mythbusting: Understanding How We Measure the Performance of MongoDBMongoDB
Benchmarking, benchmarking, benchmarking. We all do it, mostly it tells us what we want to hear but often hides a mountain of misinformation. In this talk we will walk through the pitfalls that you might find yourself in by looking at some examples where things go wrong. We will then walk through how MongoDB performance is measured, the processes and methodology and ways to present and look at the information.
Bitcoin has brought about a true revolution in how we think about money. In one fell stroke it solved the main problems that afflicted previous attempts at a truly digital currency: distributed consensus, double spending, and external attacks. Perhaps more importantly, it provided the first working version of a blockchain or distributed ledger. However, despite their relative simplicity, the underlying concepts on which these technologies are built are not well known and often obscured by hype and technical jargon.
Since the days of Bitcoin’s founding, many other crypto-currencies have been proposed and released. This tutorial will introduce these technologies in an intuitive way for data scientists, explaining their driving algorithms, motivations, and data structures.
Trust but verify, they say. If a math-savvy friend did your calculus homework for you, you would do well to have a look at it before you hand it in. Likewise, you want to verify work from third party machines you have no control over. Example: you commissioned TheBigTech (tm) cloud to run a large simulation SIM, whose results you are eager to get recognized for. Issue: you lack the means to rerun and check SIM (after all, that is why you are delegating!). Commissioning more parties may be costly or not a solution. This talk is on how Verifiable Computation (VC)—a mix of theory and systems—solved this problem: the cloud gives us a proof that its work is correct, e.g. that no HW glitch or competitor could have tampered with it. Such a proof is succinct—much more so than the abstract you are reading. You can store it in 100 bytes and verify it in microseconds on a laptop. And VC is secure: a “wrong” proof would pass as good with probability of less than 10^{-35}. I will discuss:
- applications of VC (and its “cryptographic” cousins, zkSNARKs, core of the cryptocurrency ZCash),
- intuitions on how it works,
- resources/APIs for anyone hoping to use VC or learn about it.
This webinar took place on August 23, 2012.
Never worry about servers. Never worry about config files. Never worry about patches. Simply focus on your data with Heroku Postgres.
PostgreSQL is a powerful, reliable, and durable open-source SQL-compliant database. Now available as a fully-managed cloud database from salesforce.com, Heroku Postgres reduces the costs and administrative overhead compared to operating your own database. You can even create a database instance within seconds with a single click.
Watch this webinar to learn about:
:: When to use Heroku Postgres versus Database.com
:: What data you can and should store in Heroku Postgres
:: Architecting your application with Heroku Postgres
:: How to efficiently share data in your organization with Dataclips
:: How to take advantage of features such as Fork and Follow to scale
After enormous cryptocurrencies value gains this year, Blockchain - their underneath algorithm is a topic that gets both a lot of exposure and confusion among developers. In this presentation, I’m going to create a glossary that will guide you in further exploration and sort out your knowledge.
We will discuss not only what Blockchain is but also why it is (or isn’t) the big thing. Everything using easy to grasp JavaScript code examples.
Prepare yourself for surfing on dangerous hype-wave - it’s easy to drown.
Repository of Presentation:
https://github.com/ArturSkowronski/naivechain
Presented:
4Developers Łódź (https://lodz.4developers.org.pl), Kraków, 09.11.2017
KrakowJS (http://conf.krakowjs.pl/), Krakow, 29.09.2017
Let's Build A Blockchain... in 40 minutes!Michel Schudel
Blockchain technology is hot! But how does it actually work? To understand a new technology, it always helps to try to build something with it yourself. So that’s what we’re gonna do: building a blockchain from scratch, using plain old java and a little Spring Boot, and getting it working in 40 minutes! During this introductory presentation, all concepts associated with blockchain technology are explained, such as: transactions, blocks, mining, proof-of-work, and reaching consensus about the state of the blockchain in the blockchain network.
Been hearing about blockchain lately? Get used to it because blockchain-based technology is here to stay. This presentation will go through the basics of blockchain - what it is, how it works - and examples of how blockchain-based protocols and applications can be applied to problems specific to digital advertising. #MetaXBootcamp
A quick overview of blockchain with a simple blockchain built around code adapted from https://www.youtube.com/channel/UCnxrdFPXJMeHru_b4Q_vTPQ
Ending with issues and possible moves to address them.
A Comprehensive Guide To Create Blockchain In Python | Blockchain Development...Mariya James
How can we create blockchain in python language? To develop Blockchain in Python, you must have hands-on experience in programming. Here is a comprehensive guide for creating blockchain in Python.
Let's build a blockchain.... in 40 minutes!Michel Schudel
This presentation explains blockchain fundamentals, and contains sheets of java code (demoed live during the original presentation) that show you how to build a blockchain in java.
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
There's a lot of talk about blockchain, but how does the technology behind it actually work? For developers, getting some hands-on experience is the fastest way to get familiair with new technologies. So let's build a blockchain, then! In this session, we're going to build one in plain old Java, and have it working in 40 minutes. We'll cover key concepts of a blockchain: transactions, blocks, mining, proof-of-work, and reaching consensus in the blockchain network. After this session, you'll have a better understanding of core aspects of blockchain technology.
JDD2015: Where Test Doubles can lead you... - Sebastian Malaca PROIDEA
WHERE TEST DOUBLES CAN LEAD YOU...
"With great power comes great responsibility". And Test Double Patterns gives you a great power. Your life is easier, tests lighter and faster.
But someday this power can turn against you.
Each day we are more comfortable with using Test Double Patters. We are creating assumptions. We are mocking services. We are ending with well covered code and tests... that tell us nothing.
That's why it's so important to recognize warning signs. To know the pitfalls that are waiting for us. To know what to do in these situations.
Are the smartphone wars wearing your out? When asked to choose between Objective-C and Java do you answer “None of the Above”? Do you think app stores are so 1995? Then there is good news for you and it’s called the mobile web. This isn’t about trying to port iFart to the browser, and it’s definitely not about tweaking an existing website so it doesn’t look awful on your mom’s iPhone. It is about writing full featured, engaging applications on the web. This talk is all about how to create killer web apps using HTML5, CSS3, as well as some other not-so-standard technologies available on a wide variety of popular smartphones. We’re talking about multi-threaded, high performance apps that can track your movement or even take pictures of whatever you think is interesting.
Cracking JWT tokens: a tale of magic, Node.JS and parallel computing - Node.j...Luciano Mammino
Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges. Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!
Luciano Mammino - Cracking JWT tokens: a tale of magic, Node.JS and parallel...Codemotion
Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges. Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!
MongoDB .local San Francisco 2020: Using Client Side Encryption in MongoDB 4.2MongoDB
Encryption is not a new concept to MongoDB. Encryption may occur in-transit (with TLS) and at-rest (with the encrypted storage engine). But MongoDB 4.2 introduces support for Client Side Encryption, ensuring the most sensitive data is encrypted before ever leaving the client application. Even full access to your MongoDB servers is not enough to decrypt this data. And better yet, Client Side Encryption can be enabled at the "flick of a switch".
This session covers using Client Side Encryption in your applications. This includes the necessary setup, how to encrypt data without sacrificing queryability, and what trade-offs to expect.
How to run the blockchain.info Bitcoin wallet in NodeJS (experimental).
Dutch Blockchain Hackathon - Tech Deep Dive - 2016-12-07 in Delft
Presentation made with Deckset, source:
https://gist.github.com/Sjors/b39f1e4135c05e8dfe2cf337608ec7a8
Instructions:
https://github.com/blockchain/My-Wallet-V3/wiki/NodeJS
Mythbusting: Understanding How We Measure the Performance of MongoDBMongoDB
Benchmarking, benchmarking, benchmarking. We all do it, mostly it tells us what we want to hear but often hides a mountain of misinformation. In this talk we will walk through the pitfalls that you might find yourself in by looking at some examples where things go wrong. We will then walk through how MongoDB performance is measured, the processes and methodology and ways to present and look at the information.
Bitcoin has brought about a true revolution in how we think about money. In one fell stroke it solved the main problems that afflicted previous attempts at a truly digital currency: distributed consensus, double spending, and external attacks. Perhaps more importantly, it provided the first working version of a blockchain or distributed ledger. However, despite their relative simplicity, the underlying concepts on which these technologies are built are not well known and often obscured by hype and technical jargon.
Since the days of Bitcoin’s founding, many other crypto-currencies have been proposed and released. This tutorial will introduce these technologies in an intuitive way for data scientists, explaining their driving algorithms, motivations, and data structures.
Trust but verify, they say. If a math-savvy friend did your calculus homework for you, you would do well to have a look at it before you hand it in. Likewise, you want to verify work from third party machines you have no control over. Example: you commissioned TheBigTech (tm) cloud to run a large simulation SIM, whose results you are eager to get recognized for. Issue: you lack the means to rerun and check SIM (after all, that is why you are delegating!). Commissioning more parties may be costly or not a solution. This talk is on how Verifiable Computation (VC)—a mix of theory and systems—solved this problem: the cloud gives us a proof that its work is correct, e.g. that no HW glitch or competitor could have tampered with it. Such a proof is succinct—much more so than the abstract you are reading. You can store it in 100 bytes and verify it in microseconds on a laptop. And VC is secure: a “wrong” proof would pass as good with probability of less than 10^{-35}. I will discuss:
- applications of VC (and its “cryptographic” cousins, zkSNARKs, core of the cryptocurrency ZCash),
- intuitions on how it works,
- resources/APIs for anyone hoping to use VC or learn about it.
This webinar took place on August 23, 2012.
Never worry about servers. Never worry about config files. Never worry about patches. Simply focus on your data with Heroku Postgres.
PostgreSQL is a powerful, reliable, and durable open-source SQL-compliant database. Now available as a fully-managed cloud database from salesforce.com, Heroku Postgres reduces the costs and administrative overhead compared to operating your own database. You can even create a database instance within seconds with a single click.
Watch this webinar to learn about:
:: When to use Heroku Postgres versus Database.com
:: What data you can and should store in Heroku Postgres
:: Architecting your application with Heroku Postgres
:: How to efficiently share data in your organization with Dataclips
:: How to take advantage of features such as Fork and Follow to scale
After enormous cryptocurrencies value gains this year, Blockchain - their underneath algorithm is a topic that gets both a lot of exposure and confusion among developers. In this presentation, I’m going to create a glossary that will guide you in further exploration and sort out your knowledge.
We will discuss not only what Blockchain is but also why it is (or isn’t) the big thing. Everything using easy to grasp JavaScript code examples.
Prepare yourself for surfing on dangerous hype-wave - it’s easy to drown.
Repository of Presentation:
https://github.com/ArturSkowronski/naivechain
Presented:
4Developers Łódź (https://lodz.4developers.org.pl), Kraków, 09.11.2017
KrakowJS (http://conf.krakowjs.pl/), Krakow, 29.09.2017
Let's Build A Blockchain... in 40 minutes!Michel Schudel
Blockchain technology is hot! But how does it actually work? To understand a new technology, it always helps to try to build something with it yourself. So that’s what we’re gonna do: building a blockchain from scratch, using plain old java and a little Spring Boot, and getting it working in 40 minutes! During this introductory presentation, all concepts associated with blockchain technology are explained, such as: transactions, blocks, mining, proof-of-work, and reaching consensus about the state of the blockchain in the blockchain network.
Been hearing about blockchain lately? Get used to it because blockchain-based technology is here to stay. This presentation will go through the basics of blockchain - what it is, how it works - and examples of how blockchain-based protocols and applications can be applied to problems specific to digital advertising. #MetaXBootcamp
A quick overview of blockchain with a simple blockchain built around code adapted from https://www.youtube.com/channel/UCnxrdFPXJMeHru_b4Q_vTPQ
Ending with issues and possible moves to address them.
A Comprehensive Guide To Create Blockchain In Python | Blockchain Development...Mariya James
How can we create blockchain in python language? To develop Blockchain in Python, you must have hands-on experience in programming. Here is a comprehensive guide for creating blockchain in Python.
Let's build a blockchain.... in 40 minutes!Michel Schudel
This presentation explains blockchain fundamentals, and contains sheets of java code (demoed live during the original presentation) that show you how to build a blockchain in java.
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
There's a lot of talk about blockchain, but how does the technology behind it actually work? For developers, getting some hands-on experience is the fastest way to get familiair with new technologies. So let's build a blockchain, then! In this session, we're going to build one in plain old Java, and have it working in 40 minutes. We'll cover key concepts of a blockchain: transactions, blocks, mining, proof-of-work, and reaching consensus in the blockchain network. After this session, you'll have a better understanding of core aspects of blockchain technology.
JDD2015: Where Test Doubles can lead you... - Sebastian Malaca PROIDEA
WHERE TEST DOUBLES CAN LEAD YOU...
"With great power comes great responsibility". And Test Double Patterns gives you a great power. Your life is easier, tests lighter and faster.
But someday this power can turn against you.
Each day we are more comfortable with using Test Double Patters. We are creating assumptions. We are mocking services. We are ending with well covered code and tests... that tell us nothing.
That's why it's so important to recognize warning signs. To know the pitfalls that are waiting for us. To know what to do in these situations.
Are the smartphone wars wearing your out? When asked to choose between Objective-C and Java do you answer “None of the Above”? Do you think app stores are so 1995? Then there is good news for you and it’s called the mobile web. This isn’t about trying to port iFart to the browser, and it’s definitely not about tweaking an existing website so it doesn’t look awful on your mom’s iPhone. It is about writing full featured, engaging applications on the web. This talk is all about how to create killer web apps using HTML5, CSS3, as well as some other not-so-standard technologies available on a wide variety of popular smartphones. We’re talking about multi-threaded, high performance apps that can track your movement or even take pictures of whatever you think is interesting.
Cracking JWT tokens: a tale of magic, Node.JS and parallel computing - Node.j...Luciano Mammino
Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges. Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!
Luciano Mammino - Cracking JWT tokens: a tale of magic, Node.JS and parallel...Codemotion
Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges. Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!
Cracking JWT tokens: a tale of magic, Node.JS and parallel computingLuciano Mammino
Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges. Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!
Gave this presentation and talk on the still evolving field of BITCOIN FORENSICS that brings out the technical overview and evolving forensics developments in the domain at the BSides Security Conference ie community-driven framework for building events for and by information security community members. The goal is to expand the spectrum of conversation beyond the traditional confines of space and time.
Kopiąc Trufle - Odkrywanie tajemnic najmniej zrozumiałego elementu GraalVMArtur Skowroński
Myślisz, że znalezienie trufli jest trudne? Spróbuj zrozumieć Truffle w GraalVM!
W tej lekkostrawnej prezentacji zamierzam uprościć to, co skomplikowane, i wyjaśnić rolę Truffle w ekosystemie GraalVM. Kontynuując kulinarną analogię, wyobraź sobie Truffle jako tajemniczy składnik, który wyciąga prawdziwy aromat GraalVM – wspiera wiele języków i zwiększa wydajność, tak jak prawdziwe trufle dodają daniu smak.
Przebijemy się przez techniczny żargon i wyjaśnimy, co naprawdę oznacza "framework implementacji języka". Dowiesz się, jak działa Truffle, dlaczego jest ważne, a nawet spróbujemy napisać jakiś kawałek prostego języka – zgodnie z zasadą "słowa są tanie, pokaż mi kod"
The State of the Green IT at the beginning of 2024Artur Skowroński
In the era of growing ecological awareness, the internal need to care for our planet, and (gulp) regulatory pressure, technology cannot (let me remind you again about the regulatory pressure) be left behind. The aim of this presentation is to introduce current initiatives, protocols, and tools that help application developers make them more "green" and sustainable - all in the context of the JVM.
My chcemy grać w Zielone! Czyli stan świata Green Technology końcówką 2023Artur Skowroński
"My chcemy grać w zielone i chcemy by za domem rosło drzewo! I żeby ptak śpiewał!" W dobie rosnącej świadomości ekologicznej, wewnętrznej potrzeby dbania o naszą planetę oraz (gulp) presji regulacyjnej, technologia nie może (jeszcze raz przypomnę o presji regulacyjnej) pozostać w tyle. Celem tej prezentacji jest przedstawienie aktualnych inicjatyw, protokołów oraz narzędzi, które pomagają twórcom aplikacji uczynić je bardziej "zielonymi" oraz zrównoważonymi.
Although the term "Cloud Native" in the context of Java has been repeated ad nauseam for years, the JVM as a platform has only recently entered a phase where everything truly aligns with how cloud-native architectures are designed. Let's trace the path Java has already taken in recent years and take a look at what lies ahead in the future. During this presentation, you will learn about projects such as Leyden, CRaC, and GraalVM, and how they can realistically influence the way applications are developed. It turns out that these projects intersect and collectively provide a broader context for the direction Java is evolving in.
Od Czarnoksiężnik z krainy Oz do modeli na produkcjiArtur Skowroński
Machine Learning – zwłaszcza wśród osób, które o AI czytają głównie z nagłówków prasowych – urosło do miana magicznej czarnej skrzynki. Takiej, która najpierw się długo tworzy, ale jak już “się zadzieje”, to rozwiąże wszystkie problemy. Prawda jest jednak dużo bardziej przyziemna – wdrożenie jakiegokolwiek uczenia maszynowego to krew, pot, łzy i iteracja… dużo iteracji. Oraz kluczenia – posuwania się do przodu, ale też regularnego wycofywania z nietrafionych pomysłów.
W ramach wystąpienia przejdziemy krok po kroku przez całą, prawie trzyletnią podróż: od początkowego udawania, że jakikolwiek ML w aplikacji jest, poprzez pierwsze próby realnego wdrożenia, kończąc na konkretnych algorytmach rekomendacyjnych i NLP na produkcji… i to nie zawsze w miejscach gdzie się ich początkowo spodziewaliśmy.
Oczywiście, po drodzę będzie kilka wywałek na twarz.
Pewnie każdy słyszał o Valhalli czy Loomie, ale:
* czy mówią Wam coś Project Leyden, CRaC, Liliput czy Lanai?
* wiecie, że Java ma standard API dla uczenia maszynowego?
* jesteście w stanie się połapać, o co chodzi z takimi projektami jak Jakarta EE, MicroProfile czy Adoptium?
* wykorzystujecie możliwości, jakie daje uruchomienie pełnego JVM-a na GraalVM za pomocą Truffle?
O tym wszystkim opowiem w formacie “iceberg”, w którym zacznę od ogólnie znanych faktów, a później popłyniemy już tylko głębiej i głębiej...
Obiecuje zerowy poziom wiedzy, którą wykorzystacie następnego dnia w projekcie, ale maksimum zabawy z odkrywania tego, co wydarzyło się w Javie w ciągu roku z kawałkiem.
Pewnie każdy słyszał o Valhalli czy Loomie, ale:
* czy mówią Wam coś Project Leyden, CRaC, Liliput czy Lanai?
* wiecie, że Java ma standard API dla uczenia maszynowego?
* jesteście w stanie się połapać, o co chodzi z takimi projektami jak Jakarta EE, MicroProfile czy Adoptium?
* wykorzystujecie możliwości, jakie daje uruchomienie pełnego JVM-a na GraalVM za pomocą Truffle?
O tym wszystkim opowiem w formacie “iceberg”, w którym zacznę od ogólnie znanych faktów, a później popłyniemy już tylko głębiej i głębiej...
Obiecuje zerowy poziom wiedzy, którą wykorzystacie następnego dnia w projekcie, ale maksimum zabawy z odkrywania tego, co wydarzyło się w Javie w ciągu roku z kawałkiem.
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyArtur Skowroński
Reakcję z tytułu zna z pewnością każdy, kto kiedykolwiek miał przyjemność korzystania z usług mechanika, speców od remontu… a także zespołu programistów, który musi dotknąć się jakiegokolwiek Legacy.
W ramach dzisiejszego case study postaram się nieco odczarować temat. Na przykładzie realnego procesu modernizacji części systemu porozmawiamy o tym, co sprawia, że systemy gniją od środka - i czemu dzieje się tak nawet wtedy, gdy większość podejmowanych przez dekady wyborów była całkiem trafna.
Prezentacja nie ograniczy się jednak do samego filozofowania. Przechodząc krok po kroku przez proces migracji, podzielę się pewnymi niekonwencjonalnymi, praktycznymi pomysłami, które w ostatecznym rozrachunku okazały się być zaskakująco skuteczne. Włożę też kilka kijów w mrowisko - mam nadzieję co poniektórym podniosą ciśnienie i zainspirują ciekawe rozmowy
Artur Skowroński
W tym roku stuknęła mu dycha w branży. Dekadę tą spędził przy bardzo różnych projektach - od takich które startował od zera, do grubo starszych od niego. Całe życie walczy o to, żeby nie musieć klepać CRUDów… nawet jeśli oznacza to robotę szambonurka w systemach legacy. Po trzech latach fascynującej (bez ironii) przygody w ponad czterdziestoletniej architekturze, aktualnie pracuje jako Tech Lead w VirtusLab przy projekcie https://vived.io
Do zobaczenia! Koniecznie potwierdźcie swoją obecność.
Panie, kto tu Panu tak ... - czyli porozmawiajmy o LegacyArtur Skowroński
Reakcję z tytułu zna z pewnością każdy, kto kiedykolwiek miał przyjemność korzystania z usług mechanika, speców od remontu… a także zespołu programistów, który musi dotknąć się jakiegokolwiek Legacy.
W ramach dzisiejszego case study postaram się nieco odczarować temat. Na przykładzie realnego procesu modernizacji części systemu porozmawiamy o tym, co sprawia, że systemy gniją od środka - i czemu dzieje się tak nawet wtedy, gdy większość podejmowanych przez dekady wyborów była całkiem trafna.
Prezentacja nie ograniczy się jednak do samego filozofowania. Przechodząc krok po kroku przez proces migracji, podzielę się pewnymi niekonwencjonalnymi, praktycznymi pomysłami, które w ostatecznym rozrachunku okazały się być zaskakująco skuteczne. Włożę też kilka kijów w mrowisko - mam nadzieję co poniektórym podniosą ciśnienie i zainspirują ciekawe rozmowy podczas Unconference .
Ciąg dalszy nastąpi - o wielowątkowości, Projekcie Loom i kotlinowych KorutynachArtur Skowroński
Zarówno Java, jak i Kotlin są językami często używanymi przy projektowaniu systemów rozproszonych, w których wykonywane jest wiele równoczesnych zdarzeń. Operacje blokujące w tego typu systemach wydają się nie mieć racji bytu - jednocześnie jednak każdy z nas marzy o powrocie do czasów, kiedy mogliśmy pisać synchroniczny, łatwy w zrozumieniu i czytelny kod... "Kiedyś to było". Dlatego też JVM jako platforma naturalnie stara się ułatwiać wygodę używania programowania wielowątkowego. W ramach mojej prezentacji chciałbym porównać dwa nowe podejścia do tego problemu - Kotlin Coroutines i Project Loom, wprowadzający "włókna" (fibers) i kontynuacje do starej dobrej Javy.
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...Artur Skowroński
Systemy typów kojarzą się większości programistów z czymś naprawdę ciężkim, mocno akademickim i trudnym do zrozumienia, dodatkowo nie przydatnym w codziennym życiu developera. Postaram się to zmienić, przynajmniej cześciowo. O ile sam nie wierzę że świetna znajomość systemów typów uczyni Cię znacznie bardziej produktywnym, to postaram się rozwiać mit że jest to coś trudnego i niezrozumiałego. W przystępny i interaktywny sposób przedstawię odrobinę “Computer Science” które może pomóc nam zrozumieć dlaczego niektóre rzeczy w używanych przez nas językach są zaprojektowane tak, a nie inaczej.
Przede wszystkim odpowiemy zaś sobie na prawdę - jak bardzo “Typed” TypeScript tak naprawdę jest?
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’aArtur Skowroński
Systemy typów kojarzą się większości programistów z czymś naprawdę ciężkim, mocno akademickim i trudnym do zrozumienia, dodatkowo nie przydatnym w codziennym życiu developera. Postaram się to zmienić, przynajmniej cześciowo. O ile sam nie wierzę że świetna znajomość systemów typów uczyni Cię znacznie bardziej produktywnym, to postaram się rozwiać mit że jest to coś trudnego i niezrozumiałego. W przystępny i interaktywny sposób przedstawię odrobinę “Computer Science” które może pomóc nam zrozumieć dlaczego niektóre rzeczy w używanych przez nas językach są zaprojektowane tak, a nie inaczej.
Przede wszystkim odpowiemy zaś sobie na prawdę - jak bardzo “Typed” TypeScript tak naprawdę jest?
Type systems are associated with most programmers with something really hard, strongly academic and difficult to understand, and not useful in the daily life of the developer. I will try to change that, at least partly. While I do not believe that a great knowledge of type systems will make you much more productive, I will try to dispel the myth that it is something difficult and incomprehensible. In an accessible and interactive way, I will introduce a little "Computer Science" which can help us understand why some of the languages we use are designed in a way that's different.
First of all, we will answer the truth - how much "Typed" TypeScript really is?
Google Assistant po polsku - developerski punkt widzeniaArtur Skowroński
Asystenci Głosowi zdobyli olbrzymią popularność za wielką wodą. Pierwszy z dużych graczy zza oceanu, Google Assistant dostał wsparcie dla języka polskiego. Posiada on jednak pewne ograniczenia w stosunku do swoich w innych krajach.
W ramach wystąpienia pobawimy się trochę głosem i poprogramujemy na żywo w celu "napisania" sobie własnego cyfrowego pomocnika. Postaramy się też odpowiedzieć na pytanie: czy asystenci głosowi są alternatywą dla obecnych sposobów w jakie komunikujemy się z maszynami.
Asystenci Głosowi zdobyli olbrzymią popularność za wielką wodą. Alexa szturmem trafiła do salonów, sprzedając się w 10 milionach tylko w ostatnim kwartale poprzedniego roku. Google od niedawna obsługuje język polski. To najlepszy moment żeby nauczyć Twój produkt mówić i trafić nie tylko do przeglądarki internetowej czy telefonu, ale również salonu Twoich klientów. W ramach wystąpienia dowiesz się jak zacząć, porozmawiamy o tym czym różni się UX rozwiązań głosowych w stosunku do aplikacji na urządzenia z ekranem, z jakich klocków składają się podstawowe “akcje” (bo tak określane są aplikacje na głośniki), i jak obudować ją dodatkowymi możliwościami. Porównamy ekosystem Googla i Amazonu - czym różnią się od siebie? Który daje więcej możliwości programistom? Zapraszamy na 52 IT Akademię j-labs!
To Be Continued - multithreading with Project Loom and Kotlin's CoroutinesArtur Skowroński
Both Java and Kotlin are languages that are heavily used in Distributed Systems, handling multiple asynchronous operations simultaneously. Blocking is not an option in such an environment, but let’s be honest, we crave for the easier synchronous world. That’s why JVM as a platform has an inherent focus on providing an easier option of multithreaded programming. Today, I’d like to compare two of such options - Kotlin Coroutines and Project Loom, that want to provide fibers and continuations to core Java.
To be Continued - multithreading with Project Loom and Kotlin's CoroutinesArtur Skowroński
Both Kotlin and Java are languages that are heavily used in Distributed Systems, handling multiple asynchronous operations simultanouesely. Blocking is not an option in such an environment, but let’s be honest, we crave for easier synchronous world. That’s why JVM as a platform have inherent focus on providing easier option of multithreaded programming. Today, I’d like to compare two of such options - Kotlin Coroutines and Project Loom, that want to provide fibers and continuations to core Java.
Talk performed on Code Europe Warsaw 2017.
Will 2017 be a year of Voice Assistants? Let's ask Alexa from Amazon to hear what she thinks about that! I will show you how to teach Alexa new skills using AWS Lambda and AWS AI Stack, but also useful Node.js toolset. PS: Alexa is a bit shy, so please don't make a noise during the presentation!
Technologie:
IoT
Artificial intelligence
Javascript
Presentation from MeetJS Kraków February 2017.
Will 2017 be a year of Voice Assistants? Let's ask Alexa from Amazon to hear what she thinks about that!
During a presentation, I will show you how to teach Amazon Alexa new skills. I will not only briefly cover Amazon AI Stack: AWS Lambda, AWS Lex and AWS Poll, but also Node.js toolset which will encourage you to start experimenting yourself.
PS: Alexa is a bit shy, so please don't make a noise during a presentation
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
ER(Entity Relationship) Diagram for online shopping - TAEHimani415946
https://bit.ly/3KACoyV
The ER diagram for the project is the foundation for the building of the database of the project. The properties, datatypes, and attributes are defined by the ER diagram.
This 7-second Brain Wave Ritual Attracts Money To You.!nirahealhty
Discover the power of a simple 7-second brain wave ritual that can attract wealth and abundance into your life. By tapping into specific brain frequencies, this technique helps you manifest financial success effortlessly. Ready to transform your financial future? Try this powerful ritual and start attracting money today!
31. public class Block {
protected int index;
protected String hash;
protected String previousHash;
protected long timestamp;
protected Object data;
protected int nonce;
}
BLOCK PART
32. BLOCK PART
public class Block {
protected int index;
protected String hash;
protected String previousHash;
protected long timestamp;
protected Object data;
protected int nonce;
}
33. BLOCK PART
public class Block {
protected int index;
protected String hash;
protected String previousHash;
protected long timestamp;
protected Object data;
protected int nonce;
}
34. BLOCK PART
public class Block {
protected int index;
protected String hash;
protected String previousHash;
protected long timestamp;
protected Object data;
protected int nonce;
}
35. BLOCK PART
public class Block {
protected int index;
protected String hash;
protected String previousHash;
protected long timestamp;
protected Object data;
protected int nonce;
}
36. CHAIN PART
public class Blockchain extends LinkedList<Block> {
public Blockchain(Block block) {
this.add(GENESIS_BLOCK);
}
}
37. CHAIN PART
public class Blockchain extends LinkedList<Block> {
public Blockchain(Block block) {
this.add(GENESIS_BLOCK);
}
}
38. CHAIN PART
public class Blockchain extends LinkedList<Block> {
public Blockchain(Block block) {
this.add(GENESIS_BLOCK);
}
}
39. CHAIN PART
public class Blockchain extends LinkedList<Block> {
public Blockchain(Block block) {
this.add(GENESIS_BLOCK);
}
}
40. GENESIS BLOCK
public static final Block GENESIS_BLOCK = new Block(
0, //index
“e6337db8a921823784c14378abed4f7d7", //hash
null, //previousHash
1465154705, //timestamp
"Pozdro Bielsko-Biala!”, //data
0 //nonce
);
41. MINING BLOCK
public class BlockchainService {
Blockchain chain = new Blockchain();
public Block mineBlock(Object data) => {
Block newBlock = nextBlock(chain.getLast(), data);
chain.addBlock(newBlock);
return chain.getLast();
};
}
42. MINING BLOCK
public class BlockchainService {
Blockchain chain = new Blockchain();
public Block mineBlock(Object data) => {
Block newBlock = nextBlock(chain.getLast(), data);
chain.addBlock(newBlock);
return chain.getLast();
};
}
43. MINING BLOCK
public class BlockchainService {
Blockchain chain = new Blockchain();
public Block mineBlock(Object data) => {
Block newBlock = nextBlock(chain.getLast(), data);
chain.addBlock(newBlock);
return chain.getLast();
};
}
44. MINING BLOCK
public static Block nextBlock(Block prevBlock, Object data) {
int nextIndex = previousBlock.index + 1;
String prevHash = prevBlock.getHash();
long nextTime = new Date().getTime();
String nextHash = calculateHash(nextIndex, prevHash, nextTime, data);
return new Block(nextIndex, prevHash, nextHash, nextTime, data);
}
45. MINING BLOCK
public static Block nextBlock(Block prevBlock, Object data) {
int nextIndex = previousBlock.index + 1;
String prevHash = prevBlock.getHash();
long nextTime = new Date().getTime();
String nextHash = calculateHash(nextIndex, prevHash, nextTime, data);
return new Block(nextIndex, prevHash, nextHash, nextTime, data);
}
46. MINING BLOCK
public static Block nextBlock(Block prevBlock, Object data) {
int nextIndex = previousBlock.index + 1;
String prevHash = prevBlock.getHash();
long nextTime = new Date().getTime();
String nextHash = calculateHash(nextIndex, prevHash, nextTime, data);
return new Block(nextIndex, prevHash, nextHash, nextTime, data);
}
47. MINING BLOCK
public static Block nextBlock(Block prevBlock, Object data) {
int nextIndex = previousBlock.index + 1;
String prevHash = prevBlock.getHash();
long nextTime = new Date().getTime();
String nextHash = calculateHash(nextIndex, prevHash, nextTime, data);
return new Block(nextIndex, prevHash, nextHash, nextTime, data);
}
48. MINING BLOCK
public static Block nextBlock(Block prevBlock, Object data) {
int nextIndex = previousBlock.index + 1;
String prevHash = prevBlock.getHash();
long nextTime = new Date().getTime();
String nextHash = calculateHash(nextIndex, prevHash, nextTime, data);
return new Block(nextIndex, prevHash, nextHash, nextTime, data);
}
62. NEW BLOCK HANDLING
public Response handleBlockchainResponse(Blockchain newChain) {
if (newChain.getLast().getIndex() > chain.getLast().getIndex()) {
if (chain.getLast().getHash().equals(newChain.getLast().getPreviousHash())){
chain.addBlock(latestBlockReceived);
return new Response(RESPONSE_BLOCKCHAIN, new Blockchain(chain.getLast()));
}
return exchangeChains(newChain);
}
return new Response(DO_NOTHING);
}
63. NEW BLOCK HANDLING
public Response handleBlockchainResponse(Blockchain newChain) {
if (newChain.getLast().getIndex() > chain.getLast().getIndex()) {
if (chain.getLast().getHash().equals(newChain.getLast().getPreviousHash())){
chain.addBlock(latestBlockReceived);
return new Response(RESPONSE_BLOCKCHAIN, new Blockchain(chain.getLast()));
}
return exchangeChains(newChain);
}
return new Response(DO_NOTHING);
}
64. NEW BLOCK HANDLING
public Response handleBlockchainResponse(Blockchain newChain) {
if (newChain.getLast().getIndex() > chain.getLast().getIndex()) {
if (chain.getLast().getHash().equals(newChain.getLast().getPreviousHash())){
chain.addBlock(latestBlockReceived);
return new Response(RESPONSE_BLOCKCHAIN, new Blockchain(chain.getLast()));
}
return exchangeChains(newChain);
}
return new Response(DO_NOTHING);
}
65. NEW BLOCK HANDLING
public Response handleBlockchainResponse(Blockchain newChain) {
if (newChain.getLast().getIndex() > chain.getLast().getIndex()) {
if (chain.getLast().getHash().equals(newChain.getLast().getPreviousHash())){
chain.addBlock(latestBlockReceived);
return new BlockchainResponse(RESPONSE_BLOCKCHAIN, new Blockchain(chain.getLast()));
}
return exchangeChains(newChain);
}
return new BlockchainResponse(DO_NOTHING);
}