Engineer Whispering - the secrets of working with technologistsKate Matsudaira
When a team really comes together, the whole truly outweighs the sum of its parts, producing a synergy that unquestionably leads to innovation and inspiration. And while true that individuals can and do build great products, it’s only well-tuned teams that are capable of building sustainable excellence.
Software-based products present an interesting challenge to the team dynamic - collaborating and connecting with technical folks can be challenging and downright frustrating; one is from Mars and the other is from Venus. Thankfully there are many people who have successfully navigated these treacherous waters. This talk will present the distilled wisdom, anecdotes and suggestions from hundreds of industry leaders, in order to illustrate the good, the bad and the ugly of team-oriented software product development. The audience will come away with great ideas and helpful tips as to how to more effectively communicate with and relate to the more technical elements of their teams.
Building Rich User Experiences Without JavaScript SpaghettiJared Faris
Given at MADExpo 2012
Most Javascript is written to glue code and UI together without any thought to design patterns. Over time this leads to piles of Javascript that look nothing like code you’d be proud of writing. In this talk we’ll look at the rise of software libraries (like Knockout) that can help add structure to your JS. We’ll talk about when they help your project, and when they get in the way. We’ll also look into how you can easily use the Mediator and Observer patterns in JavaScript to really clean up your code with or without other libraries. As an added bonus we’ll talk about using Message Buses to really decouple your JavaScript controls. I’ll explain how we’re using these patterns at Facio and how you can implement them in your code. At the end we'll look at some code samples and we'll talk about whatever other patterns you might be interested in doing in JavaScript.
Engineer Whispering - the secrets of working with technologistsKate Matsudaira
When a team really comes together, the whole truly outweighs the sum of its parts, producing a synergy that unquestionably leads to innovation and inspiration. And while true that individuals can and do build great products, it’s only well-tuned teams that are capable of building sustainable excellence.
Software-based products present an interesting challenge to the team dynamic - collaborating and connecting with technical folks can be challenging and downright frustrating; one is from Mars and the other is from Venus. Thankfully there are many people who have successfully navigated these treacherous waters. This talk will present the distilled wisdom, anecdotes and suggestions from hundreds of industry leaders, in order to illustrate the good, the bad and the ugly of team-oriented software product development. The audience will come away with great ideas and helpful tips as to how to more effectively communicate with and relate to the more technical elements of their teams.
Building Rich User Experiences Without JavaScript SpaghettiJared Faris
Given at MADExpo 2012
Most Javascript is written to glue code and UI together without any thought to design patterns. Over time this leads to piles of Javascript that look nothing like code you’d be proud of writing. In this talk we’ll look at the rise of software libraries (like Knockout) that can help add structure to your JS. We’ll talk about when they help your project, and when they get in the way. We’ll also look into how you can easily use the Mediator and Observer patterns in JavaScript to really clean up your code with or without other libraries. As an added bonus we’ll talk about using Message Buses to really decouple your JavaScript controls. I’ll explain how we’re using these patterns at Facio and how you can implement them in your code. At the end we'll look at some code samples and we'll talk about whatever other patterns you might be interested in doing in JavaScript.
the afterparty: refactoring after 100x hypergrowthPhil Calçado
PicPay is the largest digital wallet in Latin America. We offer peer-to-peer payments, BNPL, credit cards, personal loans, insurance, investing, trading, and other financial products to 60 million people and 5 million merchants, processing over $20 billion yearly.
But just three years ago, in 2019, PicPay was 30 engineers in a small office working on a single product for a few million users. Growing our product portfolio, team size, and the number of transactions by several orders of magnitude so quickly was as chaotic as you might imagine—but we've done it!
Our approach gave teams and engineers radical autonomy to choose the best tool, process, and technology for their area. This strategy was invaluable in handling hypergrowth, but as we stabilize as a business and product, we have realized that what took us here isn't what will keep us moving forward.
In this talk, let's explore the consequences of how we dealt with our hypergrowth phase and what are the changes and initiatives we have put in place to make sure that we keep growing and pushing the envelope—but at a manageable pace this time around.
Phil Calçado is the Global CTO at PicPay. Before PicPay, Phil was Senior Director of Engineering at SeatGeek, leading the team that built the live events platform used by 44 million people worldwide. He has also led the platform team at Meetup/WeWork, worked on Linkerd - the pioneering Service Mesh, and headed product engineering for DigitalOcean and SoundCloud, both pioneers in adopting Microservices architectures.
https://plus.qconferences.com/plus2022/presentation/afterparty-refactoring-after-100x-hypergrowth
don't try this at home: self-improvement as a senior leaderPhil Calçado
Presented at LeadingEng New York 2022 (https://leaddev.com/leadingeng-new-york/video/dont-try-home-how-practice-self-improvement-senior-leader)
--
Most of us have developed our expertise as engineers through a mix of literature and experimentation. The software industry moves at a higher speed than others because we can try and study complex, real-world systems in the comfort of our bedrooms and personal Github accounts.
When you become a leader, especially one who leads other leaders, things get a little more complicated. There are books, but they tend to contain generic advice. There are patterns, but the nature of the job makes it harder to identify when and how to apply them.
In this session, I want to walk through a few things that have worked for me when you don't have a lab to try things out. Let's explore processes, tools, and resources to continuously improve your skills and expertise when there is no StackOverflow and no coding dojos.
Phil Calçado is Global CTO at PicPay, the largest digital wallet in Latin America. He leads a team of more than 1,500 engineers building financial products for 60 million users and processing over four billion dollars yearly. Before PicPay, Phil was Senior Director of Engineering at SeatGeek, where he led the team that built the live events platform used by 44 million people worldwide. He also has led the platform team at Meetup/WeWork, worked on Linkerd - the pioneering Service Mesh, and headed product engineering for DigitalOcean and SoundCloud, both pioneers in the adoption of Microservices architectures.
The Not-So-Straightforward Road From Microservices to ServerlessPhil Calçado
For the last ten years or so, many companies have focused on migrating from larger, monolithic systems and applications towards a specific style of Service-Oriented Architecture called Microservices. The promise was that these smaller, loosely-coupled, and independently developed components would increase productivity and safety for organizations, as large and complex business challenges can be broken down into smaller and simpler components.
However, even before most organizations were able to fully migrate to this new architecture and enjoy its promised benefits, a new iteration of cloud computing has been made available in the shape of Serverless platforms such as AWS Lambda, and Google Cloud and Microsoft Azure Functions.
Now lots of companies found themselves conflicted between abandoning their traditional microservices approach towards Serverless, often even before they have fully migrated to it from the legacy systems.
After leading successful Microservices adoption at SoundCloud and DigitalOcean, recently at Meetup I have faced the challenge of pivoting from a traditional monolith-to-microservices migration to a cloud-native platform.
In this talk, let's discuss the fundamental concepts, technologies, and practices behind Microservices and Serverless, and how a software architect used to distributed systems based on microservices needs to change their mindset and approach when adopting Serverless.
As much as cloud-native applications and microservices help us be more productive and resilient and grow to unprecedented scales, they also bring an entirely new class of challenges. Let’s explore how the challenge of debugging applications has changed in a highly distributed world.
From: https://www.dashcon.io/agenda/ten-years-of-failing-microservices/
How are microservices in 2017 different from how we used to build them at the beginning of the decade?
More traditional Service-Oriented Architectures were defined by protocols and standards published and curated by industry consortiums. Knowledge of the architectural style usually called "microservices", on the other hand, is often in the form of patterns, cautionary tales, and tools extracted from real-world reports and software made available by organisations that have adopted this style.
Almost ten years since the first wave of such reports, the landscape has changed considerably. Many hard challenges from the past have been eased or completely solved, and a lot of the custom software created by the microservices pioneers have been made off-the-shelf open source software.
In this talk, Phil Calçado will contrast what we first found in the first generation of microservices architectures against the current generation's landscape. Let's talk about which previous common knowledge and patterns are deprecated, which ones are still active, and introduce some of the ones that have been recently added to our toolbox.
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Phil Calçado
TALK #2: Microservices vs. The First Law of Object Design
We've been breaking systems and application into smaller components for a long time now. From Component-Based Design to Distributed Objects to SOA to what is today's preferred golden hammer: microservices.
One definition of microservices is that it is a flavor of SOA that emphasizes many specialize services versus a few more generalist ones. Often these microservices are so small that they take care of a single "object". Distributed objects aren't new to this industry, and in 2003, Martin Fowler wrote a classic article where he discusses several problems with this model, and proposes the First Law of Distributed Objects:
"Objects have been around for a while, and sometimes it seems that ever since they were created, folks have wanted to distribute them. However, distribution of objects, or indeed of anything else, has a lot more pitfalls than many people realize, especially when they're under the influence of vendors' cozy brochures. This article is about some of these hard lessons-lessons I've seen many of my clients learn the hard way... my First Law of Distributed Object Design: Don’t distribute your objects!"
Reinventing the wheel is nothing new in our field, but if microservices are meant to be small, how can we avoid the same problems from the past? What are the technologies, architectures, protocols, and practices we need in place to make sure that our microservices architecture isn't just the largest bowl of spaghetti this organization has ever cooked?
SPEAKER: Phil Calçado, Director of Software Engineering at DigitalOcean
Phil Calçado works at DigitalOcean, where he helps build the cloud for developers. Before that, he spent four years building the team and architecture behind SoundCloud's move from a monolith to microservices. He tweets at @pcalcado writes at http://philcalcado.com.
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Phil Calçado
SoundCloud is the largest repository of audio on the web, used by more than 200 million people every month, who upload more than 11 hours of audio every minute. Like so many others, we have migrated from a typical monolithic architecture to microservices. While the benefits brought by this style of SOA to our productivity and reliability are clear, the architecture required some non-obvious changes in the way we operate systems, and a way to tackle the overhead associated with having hundreds of small moving parts to serve every request. In this talk we’ll share the toolkit and strategy SoundCloud uses to keep its microservices explosion manageable. What do we do about the operations overhead? How to spread devops skills across teams to support the “you build it, you run it” vision? How to deal with breaking changes and asynchronous behaviours? How to deal with chatty interactions? Which protocol? How do I even get a diagram telling me how all this stuff is put together?
ScalaItaly 2015 - Your Microservice as a FunctionPhil Calçado
SoundCloud's microservice architecture is built mostly in Scala, using Finagle as its distributed systems workhorse. Finagle is an RPC system for the JVM, and it is based on a pipes-and-filters architecture that maps very nicely to functional programming concepts of higher-order functions and combinators. Over the past few years we have found that it is extremely useful to go even a step further and think of microservices as functions themselves. In this talk let's explore how SoundCloud uses Scala and Finagle, and how we started thinking of a microservices architecture as a special case of a functional system.
APIs: The Problems with Eating your Own Dog FoodPhil Calçado
SoundCloud's web and mobile properties are all built on top of our Public API. While building the user-interface atop a RESTful layer has proven itself a sound decision, the one-size-fits-all nature of a Public API is not ideal.
When it comes to data transfer and HTTP resource modelling, each client has their own needs, and in the end hacks and workarounds have to be implemented in both clients and servers. Feature development also becomes complicated, with coordination between multiple teams required for every single little feature.
SoundCloud is now moving to a different model, where clients have their own façade APIs, modelled after their core characteristics and needs. We are also using the architecture to break away from Conway’s Law and building more cross-functional, end-to-end teams.
From: http://gotocon.com/berlin-2013/presentation/APIs:%20The%20Problems%20with%20Eating%20your%20Own%20Dog%20food
To implement this, a lot of change in our architecture, tech stack and development processes were required. In this talk we will explore the challenges we had, the options we investigated and how ultimately SoundCloud decided to move forward.
the afterparty: refactoring after 100x hypergrowthPhil Calçado
PicPay is the largest digital wallet in Latin America. We offer peer-to-peer payments, BNPL, credit cards, personal loans, insurance, investing, trading, and other financial products to 60 million people and 5 million merchants, processing over $20 billion yearly.
But just three years ago, in 2019, PicPay was 30 engineers in a small office working on a single product for a few million users. Growing our product portfolio, team size, and the number of transactions by several orders of magnitude so quickly was as chaotic as you might imagine—but we've done it!
Our approach gave teams and engineers radical autonomy to choose the best tool, process, and technology for their area. This strategy was invaluable in handling hypergrowth, but as we stabilize as a business and product, we have realized that what took us here isn't what will keep us moving forward.
In this talk, let's explore the consequences of how we dealt with our hypergrowth phase and what are the changes and initiatives we have put in place to make sure that we keep growing and pushing the envelope—but at a manageable pace this time around.
Phil Calçado is the Global CTO at PicPay. Before PicPay, Phil was Senior Director of Engineering at SeatGeek, leading the team that built the live events platform used by 44 million people worldwide. He has also led the platform team at Meetup/WeWork, worked on Linkerd - the pioneering Service Mesh, and headed product engineering for DigitalOcean and SoundCloud, both pioneers in adopting Microservices architectures.
https://plus.qconferences.com/plus2022/presentation/afterparty-refactoring-after-100x-hypergrowth
don't try this at home: self-improvement as a senior leaderPhil Calçado
Presented at LeadingEng New York 2022 (https://leaddev.com/leadingeng-new-york/video/dont-try-home-how-practice-self-improvement-senior-leader)
--
Most of us have developed our expertise as engineers through a mix of literature and experimentation. The software industry moves at a higher speed than others because we can try and study complex, real-world systems in the comfort of our bedrooms and personal Github accounts.
When you become a leader, especially one who leads other leaders, things get a little more complicated. There are books, but they tend to contain generic advice. There are patterns, but the nature of the job makes it harder to identify when and how to apply them.
In this session, I want to walk through a few things that have worked for me when you don't have a lab to try things out. Let's explore processes, tools, and resources to continuously improve your skills and expertise when there is no StackOverflow and no coding dojos.
Phil Calçado is Global CTO at PicPay, the largest digital wallet in Latin America. He leads a team of more than 1,500 engineers building financial products for 60 million users and processing over four billion dollars yearly. Before PicPay, Phil was Senior Director of Engineering at SeatGeek, where he led the team that built the live events platform used by 44 million people worldwide. He also has led the platform team at Meetup/WeWork, worked on Linkerd - the pioneering Service Mesh, and headed product engineering for DigitalOcean and SoundCloud, both pioneers in the adoption of Microservices architectures.
The Not-So-Straightforward Road From Microservices to ServerlessPhil Calçado
For the last ten years or so, many companies have focused on migrating from larger, monolithic systems and applications towards a specific style of Service-Oriented Architecture called Microservices. The promise was that these smaller, loosely-coupled, and independently developed components would increase productivity and safety for organizations, as large and complex business challenges can be broken down into smaller and simpler components.
However, even before most organizations were able to fully migrate to this new architecture and enjoy its promised benefits, a new iteration of cloud computing has been made available in the shape of Serverless platforms such as AWS Lambda, and Google Cloud and Microsoft Azure Functions.
Now lots of companies found themselves conflicted between abandoning their traditional microservices approach towards Serverless, often even before they have fully migrated to it from the legacy systems.
After leading successful Microservices adoption at SoundCloud and DigitalOcean, recently at Meetup I have faced the challenge of pivoting from a traditional monolith-to-microservices migration to a cloud-native platform.
In this talk, let's discuss the fundamental concepts, technologies, and practices behind Microservices and Serverless, and how a software architect used to distributed systems based on microservices needs to change their mindset and approach when adopting Serverless.
As much as cloud-native applications and microservices help us be more productive and resilient and grow to unprecedented scales, they also bring an entirely new class of challenges. Let’s explore how the challenge of debugging applications has changed in a highly distributed world.
From: https://www.dashcon.io/agenda/ten-years-of-failing-microservices/
How are microservices in 2017 different from how we used to build them at the beginning of the decade?
More traditional Service-Oriented Architectures were defined by protocols and standards published and curated by industry consortiums. Knowledge of the architectural style usually called "microservices", on the other hand, is often in the form of patterns, cautionary tales, and tools extracted from real-world reports and software made available by organisations that have adopted this style.
Almost ten years since the first wave of such reports, the landscape has changed considerably. Many hard challenges from the past have been eased or completely solved, and a lot of the custom software created by the microservices pioneers have been made off-the-shelf open source software.
In this talk, Phil Calçado will contrast what we first found in the first generation of microservices architectures against the current generation's landscape. Let's talk about which previous common knowledge and patterns are deprecated, which ones are still active, and introduce some of the ones that have been recently added to our toolbox.
Microservices vs. The First Law of Distributed Objects - GOTO Nights Chicago ...Phil Calçado
TALK #2: Microservices vs. The First Law of Object Design
We've been breaking systems and application into smaller components for a long time now. From Component-Based Design to Distributed Objects to SOA to what is today's preferred golden hammer: microservices.
One definition of microservices is that it is a flavor of SOA that emphasizes many specialize services versus a few more generalist ones. Often these microservices are so small that they take care of a single "object". Distributed objects aren't new to this industry, and in 2003, Martin Fowler wrote a classic article where he discusses several problems with this model, and proposes the First Law of Distributed Objects:
"Objects have been around for a while, and sometimes it seems that ever since they were created, folks have wanted to distribute them. However, distribution of objects, or indeed of anything else, has a lot more pitfalls than many people realize, especially when they're under the influence of vendors' cozy brochures. This article is about some of these hard lessons-lessons I've seen many of my clients learn the hard way... my First Law of Distributed Object Design: Don’t distribute your objects!"
Reinventing the wheel is nothing new in our field, but if microservices are meant to be small, how can we avoid the same problems from the past? What are the technologies, architectures, protocols, and practices we need in place to make sure that our microservices architecture isn't just the largest bowl of spaghetti this organization has ever cooked?
SPEAKER: Phil Calçado, Director of Software Engineering at DigitalOcean
Phil Calçado works at DigitalOcean, where he helps build the cloud for developers. Before that, he spent four years building the team and architecture behind SoundCloud's move from a monolith to microservices. He tweets at @pcalcado writes at http://philcalcado.com.
Three Years of Microservices at SoundCloud - Distributed Matters Berlin 2015Phil Calçado
SoundCloud is the largest repository of audio on the web, used by more than 200 million people every month, who upload more than 11 hours of audio every minute. Like so many others, we have migrated from a typical monolithic architecture to microservices. While the benefits brought by this style of SOA to our productivity and reliability are clear, the architecture required some non-obvious changes in the way we operate systems, and a way to tackle the overhead associated with having hundreds of small moving parts to serve every request. In this talk we’ll share the toolkit and strategy SoundCloud uses to keep its microservices explosion manageable. What do we do about the operations overhead? How to spread devops skills across teams to support the “you build it, you run it” vision? How to deal with breaking changes and asynchronous behaviours? How to deal with chatty interactions? Which protocol? How do I even get a diagram telling me how all this stuff is put together?
ScalaItaly 2015 - Your Microservice as a FunctionPhil Calçado
SoundCloud's microservice architecture is built mostly in Scala, using Finagle as its distributed systems workhorse. Finagle is an RPC system for the JVM, and it is based on a pipes-and-filters architecture that maps very nicely to functional programming concepts of higher-order functions and combinators. Over the past few years we have found that it is extremely useful to go even a step further and think of microservices as functions themselves. In this talk let's explore how SoundCloud uses Scala and Finagle, and how we started thinking of a microservices architecture as a special case of a functional system.
APIs: The Problems with Eating your Own Dog FoodPhil Calçado
SoundCloud's web and mobile properties are all built on top of our Public API. While building the user-interface atop a RESTful layer has proven itself a sound decision, the one-size-fits-all nature of a Public API is not ideal.
When it comes to data transfer and HTTP resource modelling, each client has their own needs, and in the end hacks and workarounds have to be implemented in both clients and servers. Feature development also becomes complicated, with coordination between multiple teams required for every single little feature.
SoundCloud is now moving to a different model, where clients have their own façade APIs, modelled after their core characteristics and needs. We are also using the architecture to break away from Conway’s Law and building more cross-functional, end-to-end teams.
From: http://gotocon.com/berlin-2013/presentation/APIs:%20The%20Problems%20with%20Eating%20your%20Own%20Dog%20food
To implement this, a lot of change in our architecture, tech stack and development processes were required. In this talk we will explore the challenges we had, the options we investigated and how ultimately SoundCloud decided to move forward.
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/
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
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
25. tl;dr
=> it’s not because you are not in object-
land that you can drop minimally good
practices
=> just using the basic blocks of functional
programming gives you a lot
=> after a while using these you see
patterns emerging. and you understand why
monads and friends exist. promise :)
Sunday, January 29, 12
26. Functional Programming with Bananas,
Lenses, Envelopes and Barbed Wire:
http://bit.ly/FP-with-Bananas-Lenses-
Envelopes-and-Barbed-Wire
Basic Category Theory for Computer
Scientists: http://amzn.to/xxeVUC
Theorems for free!:
http://bit.ly/Theorems-for-free
The Essence of Functional Programming:
http://bit.ly/the-essence-of-FP
Sunday, January 29, 12