presentation slides compiler construction
SDT is done by attaching rules to productions in a grammar
Every node of the abstract syntax tree is attached with certain attribute set
Example :
E---- E+T {E.val=E.val+T.val}
presentation slides compiler construction
SDT is done by attaching rules to productions in a grammar
Every node of the abstract syntax tree is attached with certain attribute set
Example :
E---- E+T {E.val=E.val+T.val}
A seminar in advanced Software Engineering concerning using models to guide the development process, and QVT to transfer a model into another model automatically
VMworld 2013: Deep Dive into vSphere Log Management with vCenter Log InsightVMworld
VMworld 2013
Steve Flanders, VMware
Chengdu Huang, VMware
Learn more about VMworld and register at http://www.vmworld.com/index.jspa?src=socmed-vmworld-slideshare
Start programming in a more functional style in Java. This is the second in a two part series on lambdas and streams in Java 8 presented at the JoziJug.
These are slides from a talk I gave to the Java Colombo meetup group in Sri Lanka in 2013.
I talked about how key to success is taking the opportunities that show up in front of you - jumping in head first and then figuring your way forward.
Steve Job's quote applies: You can only connect the dots looking backwards.
A seminar in advanced Software Engineering concerning using models to guide the development process, and QVT to transfer a model into another model automatically
VMworld 2013: Deep Dive into vSphere Log Management with vCenter Log InsightVMworld
VMworld 2013
Steve Flanders, VMware
Chengdu Huang, VMware
Learn more about VMworld and register at http://www.vmworld.com/index.jspa?src=socmed-vmworld-slideshare
Start programming in a more functional style in Java. This is the second in a two part series on lambdas and streams in Java 8 presented at the JoziJug.
These are slides from a talk I gave to the Java Colombo meetup group in Sri Lanka in 2013.
I talked about how key to success is taking the opportunities that show up in front of you - jumping in head first and then figuring your way forward.
Steve Job's quote applies: You can only connect the dots looking backwards.
These are slides from a talk I gave in 2016 at the DisruptAsia conference in Colombo, SrI Lanka about raising money for a startup company. In addition to concepts I also went through some of the journey of WSO2 funding.
This is a talk I gave at Harvard Center for International Development on May 9th, 2018.
Abstract:
This talk (discussion?) is my story of returning to Sri Lanka in 2001, starting an open source foundation, starting a business, joining the army and building software of all kinds. I lived in the US for 16 years before that (my entire adult life) and have now been back for nearly 17 years. This talk will discuss my experiences and why I think Sri Lanka can easily become a leading technology creating country. I will also discuss how diaspora who genuinely want to, can practically play a roe in improving Sri Lanka.
The IESL Ray Wijewardene Memorial Lecture "Nobody to Leader: Achieving Global Leadership with Software" I gave on September 7th, 2017 in Colombo, Sri Lanka.
Its now been nearly a decade since SOA came into existence as part of mainstream enterprise computing. In this talk we will discuss the state of the union of the world of services to attempt to answer some interesting questions about SOA: What have we achieved in 10 years? What is the state of standards? Which standards are being adopted? Which standards are dead and dying? What are the successful implementation strategies? And finally, will cloud computing rain on the SOA parade?
Service Oriented Architecture for Net Centric Operations based on Open Source...Sanjiva Weerawarana
In this talk I discussed the role of SOA and open source technology in building large scale distributed systems for national defence and regional cooperation. My primary objective was to encourage collaboration in the form of FOSS and open standards to make better software systems for a given military organization or for groups of friendly nations.
Media, messaging and telecommunications convergence is now accepted as the norm. Convergence has resulted in greater consumer choice, lower costs and incredible innovation. It is important to note that even incumbent vendors in this space have much to gain from such convergence as it results in the potential to offer higher value services to customers, thus creating more revenue opportunities.
Enterprise IT has not yet seen convergence come home. We continue to create separation between BPM, SOA, EDA, WOA, SaaS, Cloud computing and more. Unlike the case of telecommunications convergence, however, in the enterprise IT world the incumbents are actually not incentivized to fuel convergence as they continue to "cash in" on old investments, slightly refreshed in some cases.
Fortunately, all hope is not lost! As open standards focused on interoperability become more pervasive, many traditional technological
boundaries are rapidly coming down and falling victim to convergence. Open source further accelerates the process by being the breeding grounds of untethered disruptive innovation resulting in simple, easy to use technologies which are made available freely, thus fueling rapid adoption.
In this talk I explore the growth of convergence in enterprise IT and the radical simplicity it is delivering to enterprise architects & developers.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
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!
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Understanding Nidhi Software Pricing: A Quick Guide 🌟
Choosing the right software is vital for Nidhi companies to streamline operations. Our latest presentation covers Nidhi software pricing, key factors, costs, and negotiation tips.
📊 What You’ll Learn:
Key factors influencing Nidhi software price
Understanding the true cost beyond the initial price
Tips for negotiating the best deal
Affordable and customizable pricing options with Vector Nidhi Software
🔗 Learn more at: www.vectornidhisoftware.com/software-for-nidhi-company/
#NidhiSoftwarePrice #NidhiSoftware #VectorNidhi
1. Ballerina is not Java (or Go or ..)
Sanjiva Weerawarana, Ph.D.
Founder, Chairman & Chief Architect; WSO2
BallerinaCon – San Francisco, July 18, 2018
2. Motivation: Why yet another language?
• Digital transformation
– Everything is a network service
– Produce, not just consume network services
– Every business has to become a software company
• Minimalization of computing
– Hardware VMs Containers Serverless
– SOA Microservices
– ESB Service meshes
• Middleware is dead; middleware is everywhere
– Servers sidecars code
7/21/2018 2
3. Design motivation: Sequence diagrams
• Used to describe how complex systems work
• Why not use that as the abstraction for code?
7/21/2018 3
4. Design principles
• Code with equivalent both text and graphic syntaxes
• Do not try to hide the network
• First class support for network data types
• Make programs network resilient by default
• No room for best practices or “findbugs”
• Make programs secure by default
• No dogmatic programming paradigm
• Mainstream concepts & abstractions, not research
7/21/2018 4
5. Unusual aspects of Ballerina
• Structural type system with network friendly types and unions
• First-class nature of application level network abstractions
• Graphical with sequence diagrams
• Sequence diagram based parallelism model
• Errors and exceptions
• Traditional middleware is in the language
– API mgmt, ESB like integration, data integration, streaming analytics, identity
• Language extensibility with environment binding and compilation extensibility
• Integrated query and streaming query
• Language level security abstractions
• Event driven runtime
• Not afterthoughts:
– Documentation
– Version management
– Dependency management
– Testing
7/21/2018 5
10. Type descriptors
• A type descriptor describes a set of values
– Membership test for a set
• A type is a label for the set
• Note: a given value can be in any number of sets
7/21/2018 10
11. Basic types
• Names for the fundamental value sets
– int, float, …
• Type constructors
– map, record, …
7/21/2018 11
12. Broad vs. narrow type
string s = “x”;
• What type is the value “x”?
– Narrow type: Singleton type with just that value: { “x” }
– Broad type: string
7/21/2018 12
13. Mapping types
• Mappings are collections of (name, value) pairs
• Variations
– Open vs. closed mappings
– Required vs. optional fields
• “record” type constructor
– Collection of mandatory and optional named fields of any types
– Open if desired
• “map” type constructor
– Any fields but all values of a single type
– Always open
• Covariant subtypes
– Storage type
7/21/2018 13
14. List types
• Ordered sequence of values
• Variations: fixed length vs. variable length
• Array constructor
– Single member type
– Fixed or variable length
• Tuple constructor
– Sequence of values of various member types
– Fixed length
7/21/2018 14
15. XML
• Minimalistic but powerful native xml type
• Non-traditional XML architecture
– xml is sequence of things that appear in XML (elements, comments,
text, ..)
– Elements do not contain references to parent or siblings and same
element can appear in multiple xml values
– No node identity, no text nodes (just strings)
– Namespaces married to Ballerina qualified name architecture
• Literal XML values, reading/writing
7/21/2018 15
16. Tables
• Tabular data
– Programmatically generated & manipulated
– Database connectors to load/store tables
• Integrated SQL-like query, ala C# LINQ
– In-memory database
– Table rows are just records (no ORM)
7/21/2018 16
17. Errors
• Errors are their own value space
– (reason (string), details (map), stacktrace)
7/21/2018 17
19. Union types
• Type defined by union of two or more other types
– Remember, a type is name for a set of values
• E.g.:
type IntOrString float | string;
IntOrString v1 = “yo”;
IntOrString v2 = 3.141592;
7/21/2018 19
0 100.98
“would”
“wouldn’t”
20. Finite types
• Remember, a type is name for a set of values
• Sets can have finite number of values as well
type ThisOrThat “this” | “that” | 17;
7/21/2018 20
21. Optional types
• Variable can be declared to holding a value of a particular
type or no value at all
int? foo;
Person? bar;
• No null pointers in Ballerina!
7/21/2018 21
22. json
• json is just a union
– () | int | float | string | map<json> | json[]
• json objects are most commonly used
– map<json>, but subtyped to an open record with non-mandatory
fields in most cases
– Very useful for man-in-the-middle network scenarios
• With json being within the type system, no data binding
concept needed for json
7/21/2018 22
23. byte
• Just a predefined union:
type byte 0 | 1 | … | 255;
• We avoid all the problems of different kinds of math for
different numeric sizes
7/21/2018 23
25. Casting and conversions
• Casting is defined by set membership: if the value is a
member of the L-Value type then it can be casted, otherwise
no
– Value doesn’t change (of course)
• ZERO automatic conversions
– Not even int -> float
• Future: data transformation constructs
7/21/2018 25
26. Type matching
• Union typed expressions have to be separated out before use:
match expression {
pattern [var] => statement;
pattern [var] => statement;
..
}
• Or within an expression:
expression but { pattern [var] => expression }
7/21/2018 26
27. Errors and error lifting
• Errors are its own value space
• Can be returned or thrown
– Often returned as T | error
– Throwing is discouraged and meant to be used rarely
• Error lifting
– Many functions return ResultType | error
– Check expression: check expression
• If error return immediately, else error is eliminated from type set
7/21/2018 27
28. Nil & error lifting navigation
• Navigating deep hierarchies is common in integration code
• Navigating through optional types are nil-lifted by “.”
operator: a.b.c
• Navigation is both nil and error lifted by “!” operator: a!b!c
• Why?
– Combination of optional types and type matching makes it impossible
to have a null reference in Ballerina
– Nil & error lifting make those rules palatable
7/21/2018 28
30. Endpoints
• Endpoints represent network termination points for incoming network
interactions or outgoing network interactions plus set of typed
interactions that are allowed
• Ingress vs. egress endpoints
• Egress endpoints represent remote systems
– Offer a set of actions for interaction with them
• Ingress endpoints are network entry points to a Ballerina runtime via a
registered service
– Calls are delivered to a particular resource in a service
– Offers incoming endpoint list of actions to reply/message
• Modeled as an actor in sequence diagram
7/21/2018 30
31. Network interactions
• Programmer needs to be made aware that this is a network
call
– Graphically line from a worker to an endpoint
– Textually:
var result = epName->actionName (args);
• If any errors occur they need to be type matched and handled
7/21/2018 31
32. Outbound resiliency
• Failure is normal in network interactions
• Endpoints are logical
– Group them for load balancing, failover or other behaviors
• Circuit breaking, bulk-heading, timeouts, load management all
part of endpoint architecture
7/21/2018 32
33. Services & resources
• Service is a collection of resources where each resource is
network invokable via ingress endpoints
• Services must be attached to an endpoint to be invoked
• Responses must be via endpoint and not by returning values
– Responses may not go
7/21/2018 33
34. Ballerina graphical notation
• Sequence diagrams focused on showing worker and endpoint
interactions
– Endpoints represent network services
• Each worker is sequential code
– We can zoom in graphically but its really just code
• Not meant to be used for low-code / no-code or by non-
programmers
– Meant to make it easier to understand complex distributed
interactions
7/21/2018 34
35. Always-on parallelism
• Every executable entity (function, method, resource) is a
collection of workers
– Line in a sequence diagram
• Each worker is a independent execution context
• All workers of a function execute concurrently when the
function is called
7/21/2018 35
37. Blocking function invocation
• Protocol
– Initialization: start endpoints
– Start concurrent workers
– First one to return will release caller
• Others continue to completion
• If no one completes (e.g. due to failures) function call fails
with “call failed” exception
• Results in a cactus stack instead of a traditional call stack
7/21/2018 37
38. Non-blocking invocation and futures
• Any function can be called in a non-blocking way:
future<T> f = start functionName (args)
• Wait for completion, cancel, get return values via typed future
7/21/2018 38
39. Worker to worker communication
• Via anonymous channels, non-blocking for send, blocking for
receive
• More comprehensive patterns coming
7/21/2018 39
40. Implementation
• Compiler produces mid level intermediate representation
(BVM bytecodes) into library (.balo)
– Portable object format
• Extensible architecture for compiler to allow 3rd party
annotation processing to become part of compilation process,
e.g. Docker/K8s
• IDEs supported via Language Server Protocol
– Plugins for VS Code, IntelliJ and standalone browser-based Composer
• Current runtime is a Java based interpreter for mid level IR
– Will be compiled via LLVM to native code
7/21/2018 40
41. Ongoing work
• Concurrency management with STM, uniqueness types
• Workflow related
– Forward recoverability
– Compensation
– Checkpoint and restart
• Docker / Kubernetes compositions
• Generic types
• Internationalizing the grammar
• Implementation
– Native compilation via LLVM
– Also WebASM
7/21/2018 41
42. Summary
• Ballerina is an attempt to build a modern industrial grade
programming language
– For future with lots of network endpoints
• Type system is designed to make network data processing easier
• First class network services along with functions/objects
• Framework to encourage more secure code
• Fully open source and developed openly
7/21/2018 42