Slides from my PyCon 2011 talk, "Exhibition of Atrocity," a confessional of my sins against the Python programming language.
Abstract: http://us.pycon.org/2011/schedule/presentations/138/
Video: http://www.pycon.tv/#/video/49
From Java to Scala - advantages and possible risksSeniorDevOnly
Oleksii Petinov during his presentation gave the audience the overview of his vision of Scala pros and contras. In his vision Scala smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive.
There is admittedly some truth to the statement that “Scala is complex”, but the learning curve is well worth the investment.
Slides from my PyCon 2011 talk, "Exhibition of Atrocity," a confessional of my sins against the Python programming language.
Abstract: http://us.pycon.org/2011/schedule/presentations/138/
Video: http://www.pycon.tv/#/video/49
From Java to Scala - advantages and possible risksSeniorDevOnly
Oleksii Petinov during his presentation gave the audience the overview of his vision of Scala pros and contras. In his vision Scala smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive.
There is admittedly some truth to the statement that “Scala is complex”, but the learning curve is well worth the investment.
Presentation I gave at a Rust Austin meetup in November 2018 about exploring different approaches for interpreting custom DSLs in Rust with varying speed characteristics and associated safety issues.
FunScript/F# is the only statically-typed compile-to-js language poised to take full advantage of the JavaScript ecosystem. F#'s type providers make consuming JavaScript possible without any code generation or foreign function interface definition. FunScript has taken the first steps to making this a reality by consuming TypeScript definitions files. However, the F# community has more ambitious plans to consume pure JavaScript files too. Seamless integration with the node package manager might also be on the horizon. Find out more at: http://funscript.info/ http://fsharp.org/ and http://zbray.com/
Scala is becoming the language of choice for many development teams. This talk highlights how Scala excels in the world of multi-core processing and explores how it compares to Java 8.
Video Presentation: http://youtu.be/8vxTowBXJSg
Inheritance and Polymorphism in Python. Inheritance is a mechanism which allows us to create a new class – known as child class – that is based upon an existing class – the parent class, by adding new attributes and methods on top of the existing class.
Slides from Advaned Python lectures I gave recently in Haifa Linux club
Advanced python, Part 1:
- Decorators
- Descriptors
- Metaclasses
- Multiple inheritance
Performance and testing are just one aspect of code, to really be successful your code needs to be readable, maintainable and generally easier to comprehend and work with. This talk draws from my own experience in applying the techniques of object calisthenics and code readability, within an existing team. It will help you identify trouble areas, learn how to refactor them and train you to write better code in future projects avoiding common pitfalls.
Object Oriented programming in Python.
Originally part 3 of a 4 lectures seminar for the Networking class of the Computer Science course at the University of Parma
Presentation I gave at a Rust Austin meetup in November 2018 about exploring different approaches for interpreting custom DSLs in Rust with varying speed characteristics and associated safety issues.
FunScript/F# is the only statically-typed compile-to-js language poised to take full advantage of the JavaScript ecosystem. F#'s type providers make consuming JavaScript possible without any code generation or foreign function interface definition. FunScript has taken the first steps to making this a reality by consuming TypeScript definitions files. However, the F# community has more ambitious plans to consume pure JavaScript files too. Seamless integration with the node package manager might also be on the horizon. Find out more at: http://funscript.info/ http://fsharp.org/ and http://zbray.com/
Scala is becoming the language of choice for many development teams. This talk highlights how Scala excels in the world of multi-core processing and explores how it compares to Java 8.
Video Presentation: http://youtu.be/8vxTowBXJSg
Inheritance and Polymorphism in Python. Inheritance is a mechanism which allows us to create a new class – known as child class – that is based upon an existing class – the parent class, by adding new attributes and methods on top of the existing class.
Slides from Advaned Python lectures I gave recently in Haifa Linux club
Advanced python, Part 1:
- Decorators
- Descriptors
- Metaclasses
- Multiple inheritance
Performance and testing are just one aspect of code, to really be successful your code needs to be readable, maintainable and generally easier to comprehend and work with. This talk draws from my own experience in applying the techniques of object calisthenics and code readability, within an existing team. It will help you identify trouble areas, learn how to refactor them and train you to write better code in future projects avoiding common pitfalls.
Object Oriented programming in Python.
Originally part 3 of a 4 lectures seminar for the Networking class of the Computer Science course at the University of Parma
Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive." This session is an introduction of Scala for Java developers.
Presentation & Fetured Video Included.
From Java to Kotlin beyond alt+shift+cmd+k - Kotlin Community Conf MilanFabio Collini
Kotlin is a first-class language for Android development since Google I/O 2017. And it’s here to stay!
Thanks to Android Studio it’s really easy to introduce Kotlin in an existing project, the configuration is trivial and then we can convert Java classes to Kotlin using a Alt+Shift+Cmd+K. But the new syntax is the just beginning, using Kotlin we can improve our code making it more readable and simpler to write.
In this talk we’ll see how to use some Kotlin features (for example data classes, collections, coroutines and delegates) to simplify Android development comparing the code with the equivalent “modern” Java code. It’s not fair to compare Kotlin code with plain Java 6 code so the Java examples will use lambdas and some external libraries like RxJava and AutoValue.
Why we are submitting this talk? Because Go is cool and we would like to hear more about this language ;-). In this talk we would like to tell you about our experience with development of microservices with Go. Go enables devs to create readable, fast and concise code, this - beyond any doubt is important. Apart from this we would like to leverage our test driven habbits to create bulletproof software. We will also explore other aspects important for adoption of a new language.
Выступление в рамках спецкурса "Немейнстримовые технологии разработки", читаемого в НГУ. http://bit.ly/mainstreamless
Аудио дорожка работает, но нужно иметь некоторое терпение, так как грузится она не моментально.
Short (45 min) version of my 'Pragmatic Real-World Scala' talk. Discussing patterns and idioms discovered during 1.5 years of building a production system for finance; portfolio management and simulation.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
8. val
scala> val name = "Junichi Kato"
name: java.lang.String = Junichi Kato
scala> name = "JUNICHI KATO"
<console>:6: error: reassignment to val
name = "JUNICHI KATO"
9. var
scala> var name = "Junichi Kato"
name: java.lang.String = Junichi Kato
scala> name = "JUNICHI KATO"
name: java.lang.String = JUNICHI KATO
10. type
scala> val name = "Junichi Kato"
name: java.lang.String = Junichi Kato
scala> val name:String = "Junichi Kato"
name: String = Junichi Kato
scala> val num:Number = 100L
num: java.lang.Number = 100
11. method
def add(a:Int, b:Int):Int = {
return a + b
}
def add(a:Int, b:Int):Int = a + b
def add(a:Int, b:Int) = a + b
hoge.add(1, 2) / 3
/
12. if & for
if
val a = 10
val ret = if (a % 2 == 0) true else false
val ret = if (a % 2 == 0) { println(“ ”); true }
else { println(“ ”); false }
def isEven(n: Int) = if (n % 2 == 0) true else false
for
for(i <- 1 to 3) println(i) / 1,2,3
/
for(i <- Array(1,2,3)) println(i) / 1,2,3
/
val numbers = for(i <- 1 to 10) yield i
13. class
class PersonName
(fn: String, ln: String){
require(fn.length > 0) // IAE
require(ln.length > 0) // IAE
val firstName = fn
val lastName = ln
def fullName = “%s, %s”.format(firstName, lastName)
}
14. class
class PersonName(val firstName:String, val
lastName: String){
require(firstName.length > 0)
require(lastName.length > 0)
def fullName = “%s, %s”.format(firstName,
lastName)
15. class
val pn = new PersonName(“Junichi”, “Kato”)
println(pn.fullName)
val pn2 = new PersonName(“”, “Kato”) / IAE
/
16. object
object EmployeeDao {
val DEFAULT_NAME = ...
def findAll = ...
}
val result = EmployeeDao.findAll
val defaultName = EmployeeDao.DEFAULT_NAME
17. { , }
class Money(val amount:BigDecimal, val currency: Currency) ...
object Money {
val JPY = Currency.getInstance(“JPY”)
def apply(amount: BigDecimal, currency: Currency) = new
Money(amount, currency)
}
val money:Money = Money(100, Money. JPY)
/ val money:Money = Money.apply(100, Money.JPY)
/
18. match
def numberMatch(n:Int) = n match {
case 1 => “one”
case 2 | 3 => “t wo or three”
case _ => “other”
}
println(numberMatch(1)) / one
/
println(numberMatch(2)) / t wo or three
/
println(numberMatch(3)) / t wo or three
/
println(numberMatch(4)) / other
/
19. match
val pattern = """([a-z]+)""".r case Array(1,2,3) => println(“
def matchTest(word: Any) = word 1,2,3 ”)
match {
case _ => throw new
case “ABC” => println(“ABC ”) IllegalArgumentException
case pattern(s) => println(" }
= "+s) matchTest(“ABC”) / ABC
/
case s: String => println(“ matchTest("aaaa") // =
= (%s)”.format(s)) (aaaa)
case n: Int if (n >= 2) => println(“2 matchTest(10) / 2
/
”)
matchTest(Array(1,2,3)) //
1,2,3
20. (a:Int) => a * a
val square: (Int) => Int = (a:Int) => a * a
val square = (a:Int) => a * a
val result = square(2) / 4
/
21. object MyMath {
def add(a:Int, b:Int) = a + b
}
val f1 = MyMath.add _
val f2: (Int,Int) => Int = MyMath.add
22. Collection
val il1 = List(1,2,3)
val il2 = list :+ 4 / 1,2,3,4
/
val im1 = Map(1 -> “ 2 -> “b”, 3 -> “c”)
a”,
val im2 = m1 + (4 -> “d”) / 1 -> “ 2 -> “b”, 3 -> “c”, 4 -> “d”
/ a”,
val ml = ListBuffer(1,2,3)
ml += 4
val mm = collection.mutalble.Map(1 -> “ 2 -> “b”, 3 -> “c”)
a”,
mm += (4 -> “d”)
24. Collection
val evens = numbers.filter(_ % 2 == 0) //
numbers
val list = List(1,2,3).map(_ * 2) / 2,4,6
/
25. Collection
Range ( (Seq) )
val range = 1 to 10; range.foreach(println)
for(i <- 1 to 10 by 2) println(i) / 1 3 5 7 9
/
6 FizzBuzz
(1 to 100).map{
case n if (n % 15 == 0) => “FizzBuzz”
case n if (n % 3 == 0) => “Fizz”
case n if (n % 5 == 0) => “Buzz”
case n => n
}.foreach(println)
29. Entity
trait Entity {
val id: String // OK
def equals(other: Any) = other match {
case that: Entity => id == that.id
case _ => false
}
def hashCode = id.hashCode
}
30. Entity
class Employee(val id: String, val name:
String)extends Entity
val kato1 = new Employee(“1”, “Junichi Kato”)
val kato2 = new Employee(“2”, “Junichi Kato”)
val kato3 = new Employee(“3”, “JUNICHI KATO”)
assert(kato1 != kato2)
assert(kato1 == kato3)
31. Entity with Factory
class Employee object Employee{
(val id:String, def apply(id:String,
name:String,
var name:String, dept:Department) = new
var dept:Department) Employee(id, name, dept)
extends Entity }
33. Value Object with Factory
class Money override def toString =
"Money(%s, %s)".format(amount,
(val amount: BigDecimal, currency)
val currency: Currency){ }
override def equals(that: Any): object Money {
Boolean = that match {
def apply(amount: BigDecimal,
case other: Money => amount == currency: Currency) = new
other.amount && currency == Money(amount, currency)
other.currency
def unapply(money: Money) =
case _ => false Some(money.amount,
} money.currency)
override def hashCode = }
amount.hashCode +
currency.hashCode
34. Value Object with Factory
VO
assert(Money(100, Money.JPY) == Money(100, Money.JPY))
assert(Money(100, Money.JPY) != Money(105, Money.JPY))
assert(Money(100, Money.JPY) != Money(100, Money.USD))
unapply
val Money(amt, cry) = money1_100yen
println(“
amount = %s, currency = %s”.format(amt, cry))
money1_100yen match { / match
/
case Money(amt, cry) => println(“
amount = %s, currency = %s”.format(amt,
cry))
case _ => ()
}
35. Value Object(case class)
case class Money(amount: BigDecimal, currency:
Currency)
apply, unapply
val
toString, equals, hashCode
VO case class Money(amount:
BigDecimal, currency: Currency) extends ValueObject
36. ValueObject Builder
case class PersonName(firstName: String, lastName:
String)
class PersonNameBuilder extends
ValueObjectBuidler[PersonName, PersonNameBuilder] { ... }
VO
val personName1 = new
PersonNameBuilder().withFirstName("Junichi").withLastNa
me("Kato").build
val personName2 = new
PersonNameBuilder().withLastName(lastName.toUpperCase
).build(personName1)
42. Aggregate(clone)
class Employee
(val id: String,
var name: String)
extends Entity with
EntityCloneable[Employee]
val emp = Employee(“1”, “Kato”)
val cloneEmp = emp.clone
43. Aggregate(Factory)
Factory
object Department {
def apply(dept: Department) =
new Department(dept, dept.name)
}
object Employee {
def apply(emp: Employee) =
new Employee(emp.id, emp.name, Department(emp.dept))
}
val emp = Employee(“1”, “KATO”, Department(“1:1”, “DEV”))
val cloneEmp = Employee(emp)
47. Repository
class EmployeeRepository / resolve, iterator ...
/
extends
Repository[Employee] { }
private val employees = val er = new
collection.mutalble.Map.emp EmployeeRepository
ty[String, Employee] val emp = Employee(id,
def store(emp: Employee) = “KATO”, Department(“DEV))
employees += (emp.id -> emp) er.store(emp)
def delete(id: String) = er(id) = emp
employee -= emp.id
er.delete(id)
def delete(emp: Employee) =
delete(emp.id) er.delete(emp)
48.
49. ( )=
id(4a74c322-08ab-450b-b674-793e1d7f399a) = class
Department {
package = dept
fields {
name = java.lang.String
}
}
50. package dept;
public class Department {
private java.lang.String name;
public void setName(java.lang.String name){
this.name = name;
}
public java.lang.String getName(){
return name;
}
}
HelloWorld&#x306E;&#x4F8B;&#x3067;&#x8AAC;&#x660E;&#x3057;&#x305F;&#x901A;&#x308A;&#x3067;&#x3059;&#x3002;\n&#x8DB3;&#x3057;&#x7B97;&#x3059;&#x308B;&#x30E1;&#x30BD;&#x30C3;&#x30C9;&#x306E;&#x4F8B;&#x3067;&#x3059;&#x3002;return a + b&#x3067;&#x3059;&#x304C;&#x3001;&#x30E1;&#x30BD;&#x30C3;&#x30C9;&#x306E;&#x6700;&#x5F8C;&#x306E;&#x5F0F;&#x306E;&#x5024;&#x304C;&#x623B;&#x308A;&#x5024;&#x306B;&#x306A;&#x308A;&#x307E;&#x3059;&#x3002;&#x305D;&#x306E;&#x5834;&#x5408;&#x306F;return&#x30AD;&#x30FC;&#x30EF;&#x30FC;&#x30C9;&#x306F;&#x4E0D;&#x8981;&#x3067;&#x3059;&#x3002;&#x307E;&#x305F;&#x4E00;&#x3064;&#x306E;&#x5F0F;&#x3067;&#x7D42;&#x308F;&#x308B;&#x5834;&#x5408;&#x306F;&#x4E2D;&#x62EC;&#x5F27;&#x306F;&#x4E0D;&#x8981;&#x3067;&#x3059;&#x3002;&#x307E;&#x305F;&#x3001;&#x5F0F;&#x304B;&#x3089;&#x623B;&#x308A;&#x5024;&#x304C;&#x578B;&#x63A8;&#x8AD6;&#x3067;&#x304D;&#x308B;&#x5834;&#x5408;&#x306F;&#x30E1;&#x30BD;&#x30C3;&#x30C9;&#x306E;&#x623B;&#x308A;&#x5024;&#x306E;&#x578B;&#x3082;&#x7701;&#x7565;&#x3067;&#x304D;&#x307E;&#x3059;&#x3002;\n