From 66c402f51886d43a8d6c0f5ad07045be9180f018 Mon Sep 17 00:00:00 2001 From: Hasitha Aravinda Date: Tue, 31 Mar 2026 06:53:21 +0530 Subject: [PATCH 1/2] Update docs --- .github/workflows/gh-pages.yml | 35 ++- .gitignore | 1 + content/en/home/about.md | 8 +- content/en/projects/ballerina.md | 16 +- docs/blog/2022/meetup.md | 12 + docs/blog/2023/ballerina-identifiers.md | 10 + docs/blog/2023/setup-ballerina.md | 10 + docs/blog/2025/wso2-tech-conf-compilers.md | 12 + .../blog/2025/wso2con-ballerina-integrator.md | 12 + docs/blog/index.md | 25 +++ docs/blog/old.md | 8 + docs/css/extra.css | 212 ++++++++++++++++++ docs/img/ballerina_logo_dgrey_png.png | Bin 0 -> 1887 bytes docs/img/favicon.png | Bin 0 -> 4276 bytes docs/index.md | 63 ++++++ docs/projects/index.md | 130 +++++++++++ mkdocs.yml | 68 ++++++ requirements.txt | 1 + 18 files changed, 596 insertions(+), 27 deletions(-) create mode 100644 docs/blog/2022/meetup.md create mode 100644 docs/blog/2023/ballerina-identifiers.md create mode 100644 docs/blog/2023/setup-ballerina.md create mode 100644 docs/blog/2025/wso2-tech-conf-compilers.md create mode 100644 docs/blog/2025/wso2con-ballerina-integrator.md create mode 100644 docs/blog/index.md create mode 100644 docs/blog/old.md create mode 100644 docs/css/extra.css create mode 100644 docs/img/ballerina_logo_dgrey_png.png create mode 100644 docs/img/favicon.png create mode 100644 docs/index.md create mode 100644 docs/projects/index.md create mode 100644 mkdocs.yml create mode 100644 requirements.txt diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 732bbbc..3c31884 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -1,37 +1,30 @@ -name: github pages +name: Deploy MkDocs on: push: branches: - - v2 # Set a branch to deploy + - v2 pull_request: +permissions: + contents: write + jobs: deploy: - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - with: - submodules: true # Fetch Hugo themes (true OR recursive) - fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - - name: Setup Node.js - uses: actions/setup-node@v1 + - uses: actions/checkout@v4 + + - uses: actions/setup-python@v5 with: - node-version: '14.x' + python-version: 3.x + - name: Install dependencies - run: npm i -g postcss postcss-cli autoprefixer - - name: Setup Hugo - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: 'latest' - extended: true + run: pip install -r requirements.txt - name: Build - run: hugo --minify + run: mkdocs build --strict - name: Deploy - uses: peaceiris/actions-gh-pages@v3 if: github.ref == 'refs/heads/v2' - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./public + run: mkdocs gh-deploy --force diff --git a/.gitignore b/.gitignore index db27023..06a61b4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ resources TODO .idea .hugo_build.lock +site/ diff --git a/content/en/home/about.md b/content/en/home/about.md index 9ffbb94..daa2bb9 100644 --- a/content/en/home/about.md +++ b/content/en/home/about.md @@ -5,11 +5,13 @@ weight : 5 ๐Ÿ‘‹ I'm ๐‡๐š๐ฌ๐ข๐ญ๐ก๐š ๐€๐ซ๐š๐ฏ๐ข๐ง๐๐š! -๐Ÿ‘จโ€๐Ÿ’ป I'm currently working on [**Ballerina Lang**](https://ballerina.io), a programming language for integration, as the lead developer of the Ballerina Compiler Team. I'm also one of the primary contributors to the Ballerina Language Design. +๐Ÿ‘จโ€๐Ÿ’ป I'm an Architect at the Integration BU and a Compiler Developer at [**Ballerina Platform**](https://github.com/ballerina-platform/), [WSO2](https://wso2.com). I lead the design and architecture of the [**Ballerina Language Compiler**](https://ballerina.io) and I'm one of the primary contributors to the Ballerina Language Design. -๐Ÿš€ Before joining the Ballerina team, I specialized in building Java middleware for enterprise integration using technologies such as WS-BPEL, BPMN, WS-HumanTask, ESB, and Web Services. My experience includes developing strong enterprise integration development skills with Java, BPEL, BPMN, and Synapse languages. +๐Ÿš€ I led the design of Ballerina Integrator (2024 Q3 โ€” 2025 Q3), whose design laid the foundation for [**WSO2 Integrator**](https://wso2.com/integrator/). Ballerina Integrator was renamed to WSO2 Integrator : BI in 2025 and then to WSO2 Integrator in 2026. Currently, I own and lead the design and implementation of [**workflow support**](https://github.com/ballerina-platform/module-ballerina-workflow) for Ballerina and WSO2 Integrator. -๐Ÿข At present, I hold the position of Associate Director/Architect at WSO2 LLC. +๐Ÿ› ๏ธ Before joining the Ballerina team, I specialized in building Java middleware for enterprise integration using technologies such as WS-BPEL, BPMN, WS-HumanTask, ESB, and Web Services. My experience includes developing strong enterprise integration development skills with Java, BPEL, BPMN, and Synapse languages. + +๐Ÿข At present, I hold the position of Architect at WSO2 LLC. ๐ŸŽฎ When I'm not coding, I enjoy playing ๐ƒ๐จ๐ญ๐š๐Ÿ for fun. diff --git a/content/en/projects/ballerina.md b/content/en/projects/ballerina.md index 059611b..d54fa78 100644 --- a/content/en/projects/ballerina.md +++ b/content/en/projects/ballerina.md @@ -6,15 +6,25 @@ weight : 20 ![Ballerina Lang](/img/ballerina_logo_dgrey_png.png) [Ballerina.io](https://ballerina.io)
-### Ballerina Compiler Design and Implementation +### Ballerina Integrator / WSO2 Integrator (BI) ยท 2024 Q3 โ€” 2025 Q3 + +I led the design and architecture of **Ballerina Integrator**, the new low-code development tool built on top of the Ballerina language. This project is the successor to an earlier low-code tool for Ballerina and is inspired by my proof-of-concept project, **Ballerina-Diagram-Gen** ([https://github.com/hasithaa/Ballerina-Diagram-Gen](https://github.com/hasithaa/Ballerina-Diagram-Gen)). In 2025, Ballerina Integrator was renamed to **WSO2 Integrator**, with BI as the default profile. + +### Workflow Support for Ballerina and WSO2 Integrator ยท 2026 โ€” Present + + [module-ballerina-workflow](https://github.com/ballerina-platform/module-ballerina-workflow) + +I currently own and lead the design and implementation of workflow support for Ballerina and WSO2 Integrator. This module brings workflow orchestration capabilities to the Ballerina ecosystem. + +### Ballerina Compiler Design and Implementation ยท 2016 โ€” Present [ballerina-lang](https://github.com/ballerina-platform/ballerina-lang) -I'm currently leading the design and architecture of the Ballerina Language Compiler implementation. Before Ballerina became a fully-fledged general-purpose language, we experimented with DSL-like syntaxes, and I was a part of the compiler and runtime team from that time. After several years of dedicated development and design, we have successfully built a Ballerina Compiler that meets the needs of developers who want to write integrations. I'm proud to have played a key role in this achievement and continue to work towards improving the language and its tools for the benefit of the development community. +Previously, I played a key role in the development of the **Ballerina Language Compiler**. I was part of the compiler and runtime team from the early days when Ballerina experimented with DSL-like syntaxes. After several years of dedicated effort, we successfully built a robust Ballerina Compiler that caters to the needs of integration developers. ### Ballerina Language Specification [Current Spec](https://ballerina.io/spec/lang/master), [2022R4](https://ballerina.io/spec/lang/2022R4/) -As a primary contributor to the Ballerina Language Specification from the beginning of the language design process, I have been involved in several iterations, feature changes, re-implementations, and design verifications. Being an initial member of the Ballerina team, I have played an active role in shaping various language features and helping the team throughout the development process. I'm proud to say that our efforts have resulted in a well-designed language that meets the needs of modern integration challenges. +As a primary contributor to the **Ballerina Language Specification** from the beginning of the language design process, I have been involved in several iterations, feature changes, re-implementations, and design verifications. Being an initial member of the Ballerina team, I have played an active role in shaping various language features and helping the team throughout the development process. diff --git a/docs/blog/2022/meetup.md b/docs/blog/2022/meetup.md new file mode 100644 index 0000000..24cefce --- /dev/null +++ b/docs/blog/2022/meetup.md @@ -0,0 +1,12 @@ +--- +title: "Introduction to Ballerina - A Cloud Native Programming Language" +date: 2022-02-02 +--- + +# :movie_camera: Introduction to Ballerina - A Cloud Native Programming Language + +## Online Meetup + +This meetup was held on 2nd February 2022 and hosted by the [CodeSeeker's Endless Programming Languages](https://www.meetup.com/CodeSeekers-Endless-Programming-Languages/) meetup group. Watch the recording. + + diff --git a/docs/blog/2023/ballerina-identifiers.md b/docs/blog/2023/ballerina-identifiers.md new file mode 100644 index 0000000..25118ed --- /dev/null +++ b/docs/blog/2023/ballerina-identifiers.md @@ -0,0 +1,10 @@ +--- +title: "Ballerina Identifiers: A Simple Guide for New Developers" +date: 2023-03-15 +--- + +# :page_facing_up: Ballerina Identifiers: A Simple Guide for New Developers + +This post was originally published on [Dev Community](https://dev.to/hasitha/ballerina-identifiers-a-simple-guide-for-new-developers-43ia). The post summary was tweeted by me, [@HasithaAravinda](https://twitter.com/HasithaAravinda/status/1635990104610152449). + +[:fontawesome-brands-twitter: View Tweet](https://twitter.com/HasithaAravinda/status/1635990104610152449){ .md-button } diff --git a/docs/blog/2023/setup-ballerina.md b/docs/blog/2023/setup-ballerina.md new file mode 100644 index 0000000..d944d44 --- /dev/null +++ b/docs/blog/2023/setup-ballerina.md @@ -0,0 +1,10 @@ +--- +title: "Ballerina setup-ballerina Action" +date: 2023-02-20 +--- + +# :page_facing_up: Ballerina `setup-ballerina` Action + +This post was originally published on [Dev Community](https://dev.to/hasitha/simplify-ballerina-workflow-on-github-with-setup-ballerina-action-452j) and covers the usage of the new setup-ballerina GitHub Action. + +[:fontawesome-brands-twitter: View Tweet](https://twitter.com/HasithaAravinda/status/1627725355472809984){ .md-button } diff --git a/docs/blog/2025/wso2-tech-conf-compilers.md b/docs/blog/2025/wso2-tech-conf-compilers.md new file mode 100644 index 0000000..ded0038 --- /dev/null +++ b/docs/blog/2025/wso2-tech-conf-compilers.md @@ -0,0 +1,12 @@ +--- +title: "Programming Languages and Compilers" +date: 2025-01-01 +--- + +# :movie_camera: Programming Languages and Compilers + +## WSO2 Technology Conference 2025 + +In this session at the WSO2 Technology Conference 2025, I dive into the fundamentals and modern advancements in programming language design and compiler construction. The talk explores key concepts in language theory, compiler architecture, and how these principles are applied in practice โ€” with insights drawn from my experience building the Ballerina compiler. + + diff --git a/docs/blog/2025/wso2con-ballerina-integrator.md b/docs/blog/2025/wso2con-ballerina-integrator.md new file mode 100644 index 0000000..043b8da --- /dev/null +++ b/docs/blog/2025/wso2con-ballerina-integrator.md @@ -0,0 +1,12 @@ +--- +title: "From Visual Flows to Power Programming: The Ballerina Integrator Journey" +date: 2025-01-01 +--- + +# :movie_camera: From Visual Flows to Power Programming: The Ballerina Integrator Journey + +## WSO2Con Barcelona 2025 + +In this talk at WSO2Con Barcelona 2025, I walk through the evolution of the Ballerina integrator experience โ€” from visual flow-based development to full-fledged power programming. The session covers how Ballerina bridges the gap between low-code integration tools and general-purpose programming, enabling developers to start with visual flows and seamlessly transition to code when more control is needed. + + diff --git a/docs/blog/index.md b/docs/blog/index.md new file mode 100644 index 0000000..f505f72 --- /dev/null +++ b/docs/blog/index.md @@ -0,0 +1,25 @@ +--- +title: "\U0001F4DA Blog" +--- + +# :books: Blog + +Here are some of my recent community engagements, blog posts and talks. Stay tuned for more! + +## 2025 + +- **[From Visual Flows to Power Programming: The Ballerina Integrator Journey (Video)](2025/wso2con-ballerina-integrator.md)** โ€” WSO2Con Barcelona 2025 +- **[Programming Languages and Compilers (Video)](2025/wso2-tech-conf-compilers.md)** โ€” WSO2 Technology Conference 2025 + +## 2023 + +- **[Ballerina `setup-ballerina` Action](2023/setup-ballerina.md)** โ€” Feb 20, 2023 +- **[Ballerina Identifiers: A Simple Guide for New Developers](2023/ballerina-identifiers.md)** โ€” Mar 15, 2023 + +## 2022 + +- **[Introduction to Ballerina - A Cloud Native Programming Language (Video)](2022/meetup.md)** โ€” Feb 2, 2022 + +## Older + +- **[My Old Blog](old.md)** โ€” Looking for my older posts? diff --git a/docs/blog/old.md b/docs/blog/old.md new file mode 100644 index 0000000..2481d77 --- /dev/null +++ b/docs/blog/old.md @@ -0,0 +1,8 @@ +--- +title: My Old Blog +date: 2021-07-22 +--- + +# My Old Blog + +Are you looking for my older blog? It is here, [https://tryitnw.blogspot.com/](https://tryitnw.blogspot.com/). diff --git a/docs/css/extra.css b/docs/css/extra.css new file mode 100644 index 0000000..1b47d2c --- /dev/null +++ b/docs/css/extra.css @@ -0,0 +1,212 @@ +/* โ”€โ”€ Minimal portfolio layout โ”€โ”€ */ + +.page-wrap { + max-width: 640px; + margin: 0 auto; + padding: 2.5rem 1rem 4rem; + font-size: 0.9rem; + line-height: 1.65; +} + +/* Name heading */ +.page-wrap h1 { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 0.1rem; +} + +/* Sub-title (## right after h1) */ +.page-wrap h1+h2 { + font-size: 0.9rem; + font-weight: 400; + color: var(--md-default-fg-color--light); + margin-top: 0; + border-bottom: none; +} + +/* Section headings */ +.page-wrap h2 { + font-size: 0.75rem; + font-weight: 600; + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--md-default-fg-color--light); + margin-top: 2.25rem; + margin-bottom: 0.75rem; + border-bottom: none; +} + +/* Entry headings */ +.page-wrap h3 { + font-size: 0.9rem; + font-weight: 600; + margin-top: 1.25rem; + margin-bottom: 0.1rem; +} + +.page-wrap h3 a { + color: var(--md-default-fg-color); + text-decoration: none; +} + +.page-wrap h3 a:hover { + text-decoration: underline; +} + +/* Role/date line */ +.page-wrap h4 { + font-size: 0.8rem; + font-weight: 400; + color: var(--md-default-fg-color--light); + margin: 0 0 0.35rem; +} + +.page-wrap p { + margin: 0.25rem 0 0.5rem; + color: var(--md-default-fg-color--light); +} + +/* Links section */ +.page-wrap hr+p a, +.page-wrap hr~p a { + color: var(--md-default-fg-color); + text-decoration: none; + font-weight: 500; +} + +.page-wrap a { + color: var(--md-default-fg-color); +} + +.page-wrap a:hover { + text-decoration: underline; +} + +/* Dividers */ +.page-wrap hr { + border: none; + border-top: 1px solid var(--md-default-fg-color--lightest); + margin: 2rem 0 0; +} + +/* Arrow links like [All posts ->] */ +.page-wrap p>a:only-child { + font-size: 0.8rem; + color: var(--md-default-fg-color--light); +} + +/* Responsive YouTube embed */ +iframe { + max-width: 100%; +} + +/* โ”€โ”€ Timeline layout for Projects โ”€โ”€ */ + +.timeline { + position: relative; + padding-left: 2rem; + margin: 1.5rem 0 2rem; +} + +.timeline::before { + content: ""; + position: absolute; + left: 5px; + top: 0; + bottom: 0; + width: 2px; + background: var(--md-default-fg-color--lightest); +} + +.timeline-entry { + position: relative; + margin-bottom: 2.25rem; +} + +.timeline-entry::before { + content: ""; + position: absolute; + left: -2rem; + top: 0.35rem; + width: 12px; + height: 12px; + border-radius: 50%; + background: var(--md-primary-fg-color); + z-index: 1; + box-sizing: border-box; +} + +.timeline-entry.current::before { + background: var(--md-primary-fg-color); + box-shadow: 0 0 0 3px color-mix(in srgb, var(--md-primary-fg-color) 25%, transparent); +} + +.timeline-entry.deprecated::before { + background: var(--md-default-fg-color--lightest); +} + +.timeline-year { + font-size: 0.7rem; + font-weight: 600; + letter-spacing: 0.06em; + text-transform: uppercase; + color: var(--md-primary-fg-color); + margin-bottom: 0.1rem; + line-height: 1.4; +} + +.timeline-entry h3, +.timeline-entry h4 { + font-size: 0.95rem; + font-weight: 600; + margin: 0.1rem 0 0.25rem; + line-height: 1.4; +} + +.timeline-entry h4 { + font-size: 0.85rem; + font-weight: 500; + margin-top: 0.75rem; +} + +.timeline-entry h3 a, +.timeline-entry h4 a { + color: var(--md-default-fg-color); + text-decoration: none; +} + +.timeline-entry h3 a:hover, +.timeline-entry h4 a:hover { + text-decoration: underline; +} + +.timeline-entry p { + font-size: 0.85rem; + line-height: 1.6; + color: var(--md-default-fg-color--light); + margin: 0.15rem 0 0.5rem; +} + +.timeline-entry ul { + font-size: 0.85rem; + line-height: 1.6; + color: var(--md-default-fg-color--light); + margin: 0.15rem 0 0.5rem; + padding-left: 1.25rem; +} + +.timeline-entry .tags { + font-size: 0.75rem; + color: var(--md-default-fg-color--lighter); + margin-top: 0.35rem; +} + +.timeline-entry .tags span { + display: inline-block; + background: var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color--light); + padding: 0.1rem 0.5rem; + border-radius: 3px; + margin: 0.1rem 0.2rem 0.1rem 0; + font-size: 0.7rem; +} \ No newline at end of file diff --git a/docs/img/ballerina_logo_dgrey_png.png b/docs/img/ballerina_logo_dgrey_png.png new file mode 100644 index 0000000000000000000000000000000000000000..440eb9c47cb4015de3ed65206185e9e16dc8b3ea GIT binary patch literal 1887 zcmb7_dpOe#8^*wR>0 z7+Z5HKg6CK8;Zy?$JZ&RJl=ob_pkSJUHAR{Ue|qnuj~8YegCYB{XR(*Nf->a&(Xog z4F(edcD&mj(VZ=W=V|Q-a29*s7JL1c-Tz5p`se36aoJEe7k5|@a&%tShhr6Qz&!gY zllZqeJ9p={m*{{Gfx)EY{xc#yg1Ai>OuX9B=FItsyqVmo+EOI^o-JN5xBdHM>r^jjxtH?3QNrXiJMdTpQsa|v#cZMatc-uaMj z6nOL)(@v6Rj^7xsDLNHqU^nJUqcMImE*&DfeqB)1=oq&V4eB$9cxgAM7xm2hJ+_-U zGDkA$>JR4zAC@Kaj2YeD;Gmf8`$1y5Xh*O=TfG~9J2tGu+mKf$jTYx~yOTaB0Wq`M z6Gs3a^^l;y5KLe?2~`9I`z zaqHvn_Xf%jVzA&y>I;N9PE=N=1ntPb(iF#0{Z`9Nouk zbP_2p0+(EgRFs?vBLlAEBRqJtOkY#7erpgq;pemD%0@$tt@*UV%C^`3Gu6f=x7XwW z6uk{j@kuY7sMK;cR1(e1(0vJ{9S~-wG z_fwk>p_FYubYBWl`LT#flQ9tXG#aD77y?yJ(EL!!{JF{ZA z3*M4oDEs;{O&Ko+j#D0G9YNsPdCE-ky!s*T(u~83g6Pt}4}*kp>!DKsN{7c-PRM)c zD4i^MRO*IxYWFx|bi zA;=4LYo4+9d4EhDPBVemBj*z=U_sN3 zp1BI}@`Z%Y`P2eJ*u&Ir%FR8qqgFD#U2HnwmR(5r2?G>@UrX`OksPu=84-G@wF#^D ziQeYn)nV}}U)0H62~GKBe|yXpBseyAdvt!e*c)+~Z|YgL`rO@38q<(%aZXG0qxHdL zk4s<39wA!3ae;nq!8dgSPiv8f*B4sHu{~lxolX)c(rs;z&VAn=TbsZPMZ35ekG52` z`0rb4&sZ{lvGpXS#73f_=OhEAp7~uSKc;7iR%=HHE$r29_#x~7+9A_72>lcyTR(1U zug3F%_*WlJ>Sx=VtbrMpMKYhec16uD=x|T*pB&$e^912T;cFO9QsAH5cgPqbQ3JTg zo!Rn^J-BYUCeW-5Q2hR-eiJdWaRK*V2ylF(Mi^8T*}Qwon>z CU7U^p literal 0 HcmV?d00001 diff --git a/docs/img/favicon.png b/docs/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3eddedae1e5ddf9e1b2d9db13b36d5367ad3d0 GIT binary patch literal 4276 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 WYjMiQrBiMI0000 + +# Hasitha Aravinda + +## Architect ยท Compiler Developer + +--- + +## About + +Architect at [WSO2](https://wso2.com) Integration BU and Compiler Developer at [Ballerina Platform](https://github.com/ballerina-platform/). BSc in Computer Science and Engineering (Hons) from the University of Moratuwa, Sri Lanka. 13+ years building programming languages, compilers, and integration middleware. + +Outside of work, I enjoy playing Dota 2. + +--- + +## Talks + +### [From Visual Flows to Power Programming: The Ballerina Integrator Journey](blog/2025/wso2con-ballerina-integrator.md) + +WSO2Con Barcelona 2025 + +### [Programming Languages and Compilers](blog/2025/wso2-tech-conf-compilers.md) + +WSO2 Technology Conference 2025 + +### [Introduction to Ballerina โ€” A Cloud Native Programming Language](blog/2022/meetup.md) + +CodeSeekers Endless Programming Languages Meetup ยท 2022 + +[All posts โ†’](blog/index.md) + +--- + +## Projects + +### [Ballerina Workflow](projects/index.md#ballerina-workflow) ยท 2026 + +### [WSO2 Integrator](projects/index.md#ballerina-integrator) ยท 2024โ€“2025 + +### [Ballerina Language & Compiler](projects/index.md#ballerina-compiler) ยท 2016โ€“Present + +### [WSO2 Business Process Server](projects/index.md#wso2-bps) ยท 2012โ€“2016 + +[All projects โ†’](projects/index.md) + +--- + +## Links + +[GitHub](https://github.com/hasithaa/) ยท +[LinkedIn](https://www.linkedin.com/in/hasithaaravinda/) ยท +[Twitter / X](https://twitter.com/HasithaAravinda) ยท + + + diff --git a/docs/projects/index.md b/docs/projects/index.md new file mode 100644 index 0000000..f4477cf --- /dev/null +++ b/docs/projects/index.md @@ -0,0 +1,130 @@ +--- +title: "\U0001F680 Projects" +--- + +# :rocket: Projects & Work + +## [WSO2](https://wso2.com) ยท Architect โ€” Integration BU ยท Compiler Developer โ€” Ballerina Platform + +2013 โ€” Present ยท 13+ years + +:material-school: BSc in Computer Science and Engineering (Hons), University of Moratuwa, Sri Lanka + +
Ballerina Compiler Design Language Specification WSO2 Integrator Workflow Java WS-BPEL BPMN SOA Web Services Linux OOP
+ +--- + +
+ +
+
2026 โ€” Present
+ +### Ballerina Workflow { #ballerina-workflow } + +:fontawesome-brands-github: [module-ballerina-workflow](https://github.com/ballerina-platform/module-ballerina-workflow) + +I currently own and lead the design and implementation of workflow support for Ballerina and WSO2 Integrator. This module brings workflow orchestration capabilities to the Ballerina ecosystem, enabling developers to build and manage workflows natively. + +
Ballerina Workflow WSO2 Integrator
+
+ +
+
2024 Q3 โ€” 2025 Q3 ยท now WSO2 Integrator
+ +### Ballerina Integrator / WSO2 Integrator (BI) { #ballerina-integrator } + +:material-link: [WSO2 Integrator โ€” Ballerina Integrator](https://wso2.com/integrator/ballerina-integrator/) + +**Ballerina Integrator (BI) is a developer tool for building integrations, including APIs, file processing, event-driven workflows, automation, and more.** + +It provides a unified low-code and pro-code developer experience within the same tool, enhanced by robust visual aids to represent various aspects of the integration, such as: + +* Architecture view +* Message flow +* Control flow +* Data mapping +* Entity relationship + +The developer experience is built on open standards and protocols, including OpenAPI, GraphQL, gRPC, and WebSocket. Additionally, AI-powered capabilities enhance developer productivity. + +Built on the open-source Ballerina programming language, BI combines all these capabilities to provide a seamless and powerful integration experience. + +I led the design and architecture of the **Ballerina Integrator**, the new low-code development tool built on top of the Ballerina language. This project is the successor to an earlier low-code tool for Ballerina and is inspired by my proof-of-concept project, **Ballerina-Diagram-Gen** ([https://github.com/hasithaa/Ballerina-Diagram-Gen](https://github.com/hasithaa/Ballerina-Diagram-Gen)), which introduced flow-based diagrams for Ballerina. In my role as lead, I was responsible for designing and building the core architecture ("the brain") of this new low-code platform. This design work laid the foundation for **WSO2 Integrator**. In 2025, Ballerina Integrator was renamed to **WSO2 Integrator : BI** (with BI as the default profile), and in 2026 it was renamed to **WSO2 Integrator**. + +
Ballerina Low-Code Integration WSO2 Integrator
+
+ +
+
2016 โ€” Present
+ +### Ballerina Language & Compiler { #ballerina-compiler } + +:fontawesome-brands-github: [ballerina-lang](https://github.com/ballerina-platform/ballerina-lang) ยท :material-link: [Ballerina.io](https://ballerina.io) + +I played a key role in the development of the **Ballerina Language Compiler**. I was part of the compiler and runtime team from the early days when Ballerina experimented with DSL-like syntaxes. After several years of dedicated effort in development and design, we successfully built a robust **Ballerina Compiler** that caters to the needs of integration developers. I continue to be involved in improving the language and its tooling for the developer community. + +#### Ballerina Language Specification + +:material-file-document: [Current Spec](https://ballerina.io/spec/lang/master) ยท :material-file-document: [2022R4](https://ballerina.io/spec/lang/2022R4/) + +As a primary contributor to the **Ballerina Language Specification** from the beginning of the language design process, I have been involved in several iterations, feature changes, re-implementations, and design verifications. Being an initial member of the **Ballerina team**, I have played an active role in shaping various language features and helping the team throughout the development process. + +
Ballerina Compiler Design Language Specification Java
+
+ +
+
2012 โ€” 2016
+ +### WSO2 Business Process Server { #wso2-bps } + +:fontawesome-brands-github: [Carbon Business Process](https://github.com/wso2/carbon-business-process) ยท :fontawesome-brands-github: [Product BPS (Archived)](https://github.com/wso2-attic/product-bps) +:fontawesome-brands-github: [Apache ODE (Forked)](https://github.com/wso2/wso2-ode) ยท :material-link: [Apache ODE (Retired)](https://ode.apache.org/) + +WSO2 Business Process Server (BPS) was an easy-to-use, open-source **business process server** that executed business processes written using **BPMN, WS-BPEL, and WS-HumanTasks** standards. BPS used a **WSO2-maintained fork of Apache ODE** as its WS-BPEL engine. As a developer and **release manager**, I contributed to its development by adding various features, including **HumanTask Coordination, Caching Layer,** and multiple **UX improvements**. Although the product is now deprecated, I am always happy to discuss and share insights about it. + +
BPMN WS-BPEL WS-HumanTask Apache ODE Java
+
+ +
+
2012 โ€” 2014
+ +### WSO2 Business Rules Server { #wso2-brs } + +:fontawesome-brands-github: [Product BRS (Archived)](https://github.com/wso2-attic/product-brs) + +WSO2 **Business Rules Server (BRS)** was an open-source tool that exposed **business rules as secure web services**, integrating them into an organization's application infrastructure. I was responsible for maintaining and releasing the product, though it is now deprecated. + +
Business Rules Web Services Java
+
+ +
+
2013 โ€” 2015 ยท Side Project
+ +### Java4BPEL Extension { #java4bpel } + +:fontawesome-brands-github: [java4bpel](https://github.com/hasithaa/java4bpel) + +Java4BPEL is an **Apache ODE & WSO2 BPS extension** that I developed as a side project. It introduced a **BPEL extension activity** for invoking **Java libraries** within **BPEL workflows**, providing greater flexibility and customizability. + +
BPEL Java Extension Side Project
+
+ +
+
2011 โ€” 2012 ยท University Project
+ +### MetCat { #metcat } + +:material-link: [MetCat (Apache Extras Archive)](https://code.google.com/archive/a/apache-extras.org/p/metcat) + +The **MetCat** project was a university project focused on developing a **metadata catalog** that could be integrated with **Apache Airavata**. It was designed to capture **workflow metadata** and assist in scalable **metadata management and user-defined queries**. + +
Metadata Apache Airavata University Project
+
+ +
+ +--- + +## :link: Stay Connected + +:fontawesome-brands-github: [GitHub](https://github.com/hasithaa) ยท :fontawesome-brands-linkedin: [LinkedIn](https://www.linkedin.com/in/hasithaaravinda/) ยท :fontawesome-brands-x-twitter: [Twitter](https://x.com/hasithaaravinda) diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..7a280fc --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,68 @@ +site_name: Tech Blog - Hasitha Aravinda +site_url: https://hasithaa.github.io/ +site_description: Hasitha Aravinda's Tech Blog + +theme: + name: material + favicon: img/favicon.png + palette: + - scheme: default + primary: indigo + accent: indigo + toggle: + icon: material/brightness-7 + name: Switch to dark mode + - scheme: slate + primary: indigo + accent: indigo + toggle: + icon: material/brightness-4 + name: Switch to light mode + features: + - navigation.tabs + - navigation.sections + - navigation.top + - toc.integrate + +extra_css: + - https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css + - css/extra.css + +extra: + social: + - icon: fontawesome/brands/twitter + link: https://twitter.com/HasithaAravinda + - icon: fontawesome/brands/github + link: https://github.com/hasithaa/ + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/in/hasithaaravinda/ + analytics: + provider: google + property: G-Y0NC9SXE07 + +copyright: Copyright © 2021-2026 Hasitha Aravinda. All rights reserved. + +markdown_extensions: + - attr_list + - md_in_html + - admonition + - pymdownx.details + - pymdownx.superfences + - pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + - toc: + permalink: true + +nav: + - Home: index.md + - Projects: + - projects/index.md + - Blog: + - blog/index.md + - Ballerina Integrator Journey: blog/2025/wso2con-ballerina-integrator.md + - Programming Languages and Compilers: blog/2025/wso2-tech-conf-compilers.md + - Setup Ballerina Action: blog/2023/setup-ballerina.md + - Ballerina Identifiers: blog/2023/ballerina-identifiers.md + - Ballerina Meetup: blog/2022/meetup.md + - My Old Blog: blog/old.md diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4df33c5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +mkdocs-material>=9.5 From f81bddcbadf2dc2de531b101267ff6fd68b35c89 Mon Sep 17 00:00:00 2001 From: Hasitha Aravinda Date: Tue, 31 Mar 2026 07:08:52 +0530 Subject: [PATCH 2/2] Remove deprecated files and update site structure for improved organization --- .gitmodules | 3 - config.toml | 105 ------------------ content/en/blog/2022/meetup.md | 10 -- content/en/blog/2023/ballerina-identifiers.md | 8 -- content/en/blog/2023/setup-ballerina.md | 8 -- content/en/blog/_index.md | 8 -- content/en/blog/old.md | 6 - content/en/home/about.md | 33 ------ content/en/home/baltips.md | 11 -- content/en/home/index.md | 11 -- content/en/home/logo.png | Bin 12108 -> 0 bytes content/en/projects/_index.md | 7 -- content/en/projects/ballerina.md | 30 ----- content/en/projects/bps.md | 11 -- content/en/projects/brs.md | 10 -- content/en/projects/java4bpel.md | 10 -- content/en/projects/metcat.md | 8 -- content/en/projects/ode.md | 11 -- docs/blog/index.md | 6 +- docs/css/extra.css | 4 +- docs/index.md | 16 ++- docs/projects/index.md | 10 +- layouts/partials/head/metadata.html | 25 ----- layouts/partials/home/projects.html | 100 ----------------- layouts/shortcodes/year.html | 1 - mkdocs.yml | 7 +- static/img/ballerina_logo_dgrey_png.png | Bin 1887 -> 0 bytes static/img/favicon.png | Bin 4276 -> 0 bytes themes/introduction | 1 - 29 files changed, 24 insertions(+), 436 deletions(-) delete mode 100644 .gitmodules delete mode 100644 config.toml delete mode 100644 content/en/blog/2022/meetup.md delete mode 100644 content/en/blog/2023/ballerina-identifiers.md delete mode 100644 content/en/blog/2023/setup-ballerina.md delete mode 100644 content/en/blog/_index.md delete mode 100644 content/en/blog/old.md delete mode 100644 content/en/home/about.md delete mode 100644 content/en/home/baltips.md delete mode 100644 content/en/home/index.md delete mode 100644 content/en/home/logo.png delete mode 100644 content/en/projects/_index.md delete mode 100644 content/en/projects/ballerina.md delete mode 100644 content/en/projects/bps.md delete mode 100644 content/en/projects/brs.md delete mode 100644 content/en/projects/java4bpel.md delete mode 100644 content/en/projects/metcat.md delete mode 100644 content/en/projects/ode.md delete mode 100644 layouts/partials/head/metadata.html delete mode 100644 layouts/partials/home/projects.html delete mode 100644 layouts/shortcodes/year.html delete mode 100644 static/img/ballerina_logo_dgrey_png.png delete mode 100644 static/img/favicon.png delete mode 160000 themes/introduction diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 8426317..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "themes/introduction"] - path = themes/introduction - url = https://github.com/victoriadrake/hugo-theme-introduction.git diff --git a/config.toml b/config.toml deleted file mode 100644 index b74d34e..0000000 --- a/config.toml +++ /dev/null @@ -1,105 +0,0 @@ -baseURL = "https://hasithaa.github.io/" -languageCode = "en-us" -theme = "introduction" -title = "My Github Page" - -DefaultContentLanguage = "en" # Default language for multilingual sites -# disqusshortname = "" # https://gohugo.io/content-management/comments -# googleAnalytics = "" # https://gohugo.io/templates/internal/#google-analytics - -[params] -themeStyle = "auto" # Choose "light" or "dark" or "auto" -favicon = "/img/favicon.png" -showMenu = true -showRSSButton = false # Show rss button in navigation -fadeIn = false # Turn on/off the fade-in effect -fadeInIndex = false # Turn on/off the fade-in effect on the index page even if fade-in was otherwise turned off -dateFormat = "Jan 2, 2006" -email = "mail.hasitha27@gmail.com" # E-mail address for contact section -# customCSS = ["foo.css"] # Include custom css files placed under assets/ -# customJS = ["foo.js"] # Include custom JavaScript files placed under assets/ -# plausible = true # Use Plausible analytics (requires an account at Plausible.io) - -# Configure the home page -[params.home] -introHeight = "fullheight" # Input either "medium" or "large" or "fullheight" -showLatest = true # Show latest blog post summary -showAllPosts = true # Set true to list all posts on home page, or set false to link to separate blog list page -allPostsArchiveFormat = false # show all posts in an archive format -numberOfProjectsToShow = 6 # Maximum number of projects to show on home page. Unset or comment out to show all projects -localTime = true # Show your current local time in contact section -timeZone = "Asia/Colombo" # Your timezone as in the TZ* column of this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones -timeFormat = "en-US" # Language specific format to use -[params.projects] -useTwoColumns = false # Use a layout with two columns instead of three - -# Share buttons on blog post pages -[params.share] -twitter = true -facebook = true -pinterest = false - -# To enable giscus, the GitHub-discussions-based comment section, -# input the repository for the discussions below. For more details, see -# https://www.joelnitta.com/posts/2021-11-24_using-giscus/ -# and https://github.com/giscus/giscus -[params.giscus] -# repo = "github-user/github-repo" # Entering repo will enable giscus -repo-id = "enter-repo-id" -category = "Comments" -category-id = "enter-category-id" -mapping = "pathname" -reactions-enabled = "1" -emit-metadata = "0" -theme = "light" -lang = "en" - -# Social icons appear in introduction and contact section. Add as many more as you like. -# Icon pack "fab" includes social network icons, see: https://fontawesome.com/icons?d=gallery&s=brands&m=free -# Icon pack "fas" includes solid style icons, see: https://fontawesome.com/icons?d=gallery&s=solid&m=free -[[params.social]] -url = "https://twitter.com/HasithaAravinda" -icon = "twitter" # icon name without the 'fa-' -icon_pack = "fab" -[[params.social]] -url = "https://github.com/hasithaa/" -icon = "github" # icon name without the 'fa-' -icon_pack = "fab" -[[params.social]] -url = "https://www.linkedin.com/in/hasithaaravinda/" -icon = "linkedin-in" # icon name without the 'fa-' -icon_pack = "fab" - -# We only use tag as a taxonomies -# You can add more by yourself -[taxonomies] -tag = "tags" -series = "series" - -[markup] -defaultMarkdownHandler = "goldmark" -[markup.goldmark] -[markup.goldmark.renderer] -unsafe = true -[markup.highlight] -codeFences = true -guessSyntax = false -hl_Lines = "" -lineNoStart = 1 -lineNos = false -lineNumbersInTable = true -# noClasses = true -# For styles, see https://xyproto.github.io/splash/docs/longer/all.html -style = "solarized-dark" -tabWidth = 4 - -[languages] -[languages.en] -languageName = "English" -languageCode = "en-us" -contentDir = "content/en" -weight = 0 -title = "Tech Blog - Hasitha Aravinda" -[languages.en.params] -description = "Hasitha Aravinda's Tech Blog" # Max 160 characters show in search results -footerText = "Copyright ยฉ 2021-{{< year >}} [**Hasitha Aravinda**](https://twitter.com/hasithaaravinda). All rights reserved." # Text to override default footer text (markdown allowed) diff --git a/content/en/blog/2022/meetup.md b/content/en/blog/2022/meetup.md deleted file mode 100644 index f8c4257..0000000 --- a/content/en/blog/2022/meetup.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title : "[Video] Introduction to Ballerina - A Cloud Native Programing Language" -date : 2022-02-02 ---- - -## Online Meetup - -This meetup was held on 2nd February 2022 and hosted by the [CodeSeekerโ€™s Endless Programming Languages](https://www.meetup.com/CodeSeekers-Endless-Programming-Languages/) meetup group. Watch the recording. - -{{< youtube id="iWOX688L-D4" >}} diff --git a/content/en/blog/2023/ballerina-identifiers.md b/content/en/blog/2023/ballerina-identifiers.md deleted file mode 100644 index 9d46d5e..0000000 --- a/content/en/blog/2023/ballerina-identifiers.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title : "[Blog] Ballerina Identifiers: A Simple Guide for New Developers" -date : 2023-03-15 ---- - -This post, originally published on [Dev Community](https://dev.to/hasitha/ballerina-identifiers-a-simple-guide-for-new-developers-43ia). The post summary was tweeted by me, [@HasithaAravinda](https://twitter.com/HasithaAravinda/status/1635990104610152449) can be found below. - -{{< tweet user="HasithaAravinda" id="1635990104610152449" >}} diff --git a/content/en/blog/2023/setup-ballerina.md b/content/en/blog/2023/setup-ballerina.md deleted file mode 100644 index 30e9579..0000000 --- a/content/en/blog/2023/setup-ballerina.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title : "[Blog] Ballerina `setup-ballerina` Action" -date : 2023-02-20 ---- - -This post was originally published on [Dev Community](https://dev.to/hasitha/simplify-ballerina-workflow-on-github-with-setup-ballerina-action-452j) and covers the usage of the new setup-ballerina GitHub Action. - -{{< tweet user="HasithaAravinda" id="1627725355472809984" >}} diff --git a/content/en/blog/_index.md b/content/en/blog/_index.md deleted file mode 100644 index ddafa08..0000000 --- a/content/en/blog/_index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: ๐Ÿ“š Blog -weight: 20 ---- - -### Blog - -Here are some of my recent community engagements, blog posts and talks. Stay tuned for more! diff --git a/content/en/blog/old.md b/content/en/blog/old.md deleted file mode 100644 index e7aaf42..0000000 --- a/content/en/blog/old.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: My Old Blog -date: 2021-07-22T00:25:17+05:30 ---- - -Are Looking for my older Blog? It is here, [https://tryitnw.blogspot.com/](https://tryitnw.blogspot.com/). diff --git a/content/en/home/about.md b/content/en/home/about.md deleted file mode 100644 index daa2bb9..0000000 --- a/content/en/home/about.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title : ๐Ÿ’ฌ About Me -weight : 5 ---- - -๐Ÿ‘‹ I'm ๐‡๐š๐ฌ๐ข๐ญ๐ก๐š ๐€๐ซ๐š๐ฏ๐ข๐ง๐๐š! - -๐Ÿ‘จโ€๐Ÿ’ป I'm an Architect at the Integration BU and a Compiler Developer at [**Ballerina Platform**](https://github.com/ballerina-platform/), [WSO2](https://wso2.com). I lead the design and architecture of the [**Ballerina Language Compiler**](https://ballerina.io) and I'm one of the primary contributors to the Ballerina Language Design. - -๐Ÿš€ I led the design of Ballerina Integrator (2024 Q3 โ€” 2025 Q3), whose design laid the foundation for [**WSO2 Integrator**](https://wso2.com/integrator/). Ballerina Integrator was renamed to WSO2 Integrator : BI in 2025 and then to WSO2 Integrator in 2026. Currently, I own and lead the design and implementation of [**workflow support**](https://github.com/ballerina-platform/module-ballerina-workflow) for Ballerina and WSO2 Integrator. - -๐Ÿ› ๏ธ Before joining the Ballerina team, I specialized in building Java middleware for enterprise integration using technologies such as WS-BPEL, BPMN, WS-HumanTask, ESB, and Web Services. My experience includes developing strong enterprise integration development skills with Java, BPEL, BPMN, and Synapse languages. - -๐Ÿข At present, I hold the position of Architect at WSO2 LLC. - -๐ŸŽฎ When I'm not coding, I enjoy playing ๐ƒ๐จ๐ญ๐š๐Ÿ for fun. - -๐ŸŒ You can find my tech blog on Ballerina at [https://bal.tips](https://bal.tips) and here, I'll be sharing my thoughts on Ballerina Language and Coding Tips etc. My portfolio is available at [https://hasithaa.github.io](https://hasithaa.github.io). Stay tuned for more! - -๐Ÿง‘โ€๐ŸŽ“ Experienced engineer with a BSc in Computer Science and Engineering (Hons) from the University of Moratuwa, Sri Lanka. - -๐Ÿ”— You can find me on social media platforms as well: - \ No newline at end of file diff --git a/content/en/home/baltips.md b/content/en/home/baltips.md deleted file mode 100644 index a124576..0000000 --- a/content/en/home/baltips.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title : ๐Ÿ’ก Bal.Tips -weight : 10 ---- - -My technical blog, [Bal.Tips](https://bal.tips), is where I share my thoughts on Ballerina language, programming tips, and other related topics. - -![bal.tips](/home/logo.png) - -I enjoy writing about my experiences with Ballerina and exploring its capabilities to solve real-world integration challenges. Whether you're a beginner or an experienced developer, I hope you'll find something useful and inspiring on my blog. So, be sure to check it out! - diff --git a/content/en/home/index.md b/content/en/home/index.md deleted file mode 100644 index e54dc2e..0000000 --- a/content/en/home/index.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title : ๐Ÿ‘‹๐ŸŒ -headless : true ---- - -# Hello There, I'm ๐‡๐š๐ฌ๐ข๐ญ๐ก๐š ๐€๐ซ๐š๐ฏ๐ข๐ง๐๐š! - -
- -* Developer [@ballerina-platform](https://github.com/ballerina-platform/) -* Associate Director/Architect [@wso2](https://wso2.com) \ No newline at end of file diff --git a/content/en/home/logo.png b/content/en/home/logo.png deleted file mode 100644 index 9a76dca45fc0412c3a153617174df8a5f1224e71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12108 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 A=l}o! diff --git a/content/en/projects/_index.md b/content/en/projects/_index.md deleted file mode 100644 index 507b479..0000000 --- a/content/en/projects/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title : ๐Ÿš€ Projects -weight : 10 ---- - -## My Projects - diff --git a/content/en/projects/ballerina.md b/content/en/projects/ballerina.md deleted file mode 100644 index d54fa78..0000000 --- a/content/en/projects/ballerina.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title : Ballerina-Platform -weight : 20 ---- - -![Ballerina Lang](/img/ballerina_logo_dgrey_png.png) - [Ballerina.io](https://ballerina.io)
- -### Ballerina Integrator / WSO2 Integrator (BI) ยท 2024 Q3 โ€” 2025 Q3 - -I led the design and architecture of **Ballerina Integrator**, the new low-code development tool built on top of the Ballerina language. This project is the successor to an earlier low-code tool for Ballerina and is inspired by my proof-of-concept project, **Ballerina-Diagram-Gen** ([https://github.com/hasithaa/Ballerina-Diagram-Gen](https://github.com/hasithaa/Ballerina-Diagram-Gen)). In 2025, Ballerina Integrator was renamed to **WSO2 Integrator**, with BI as the default profile. - -### Workflow Support for Ballerina and WSO2 Integrator ยท 2026 โ€” Present - - [module-ballerina-workflow](https://github.com/ballerina-platform/module-ballerina-workflow) - -I currently own and lead the design and implementation of workflow support for Ballerina and WSO2 Integrator. This module brings workflow orchestration capabilities to the Ballerina ecosystem. - -### Ballerina Compiler Design and Implementation ยท 2016 โ€” Present - - [ballerina-lang](https://github.com/ballerina-platform/ballerina-lang) - -Previously, I played a key role in the development of the **Ballerina Language Compiler**. I was part of the compiler and runtime team from the early days when Ballerina experimented with DSL-like syntaxes. After several years of dedicated effort, we successfully built a robust Ballerina Compiler that caters to the needs of integration developers. - -### Ballerina Language Specification - - [Current Spec](https://ballerina.io/spec/lang/master), - [2022R4](https://ballerina.io/spec/lang/2022R4/) - -As a primary contributor to the **Ballerina Language Specification** from the beginning of the language design process, I have been involved in several iterations, feature changes, re-implementations, and design verifications. Being an initial member of the Ballerina team, I have played an active role in shaping various language features and helping the team throughout the development process. diff --git a/content/en/projects/bps.md b/content/en/projects/bps.md deleted file mode 100644 index 9ecd612..0000000 --- a/content/en/projects/bps.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title : WSO2 Business Process Server -weight : 25 ---- - -### WSO2 Business Process Server - - [Carbon Business Process](https://github.com/wso2/carbon-business-process)
- [Product BPS (Archived)](https://github.com/wso2-attic/product-bps)
- -WSO2 Business Process Server (BPS) was an easy-to-use, open-source business process server that executed business processes written using BPMN, WS-BPEL, and WS-HumanTasks standards. As a developer and release manager of this product, I had the opportunity to contribute to its development and add various features, including HumanTask Coordination, Caching layer, and multiple UX improvements. While the product is now deprecated, I'm always happy to answer any questions you may have about it. Feel free to contact me anytime. diff --git a/content/en/projects/brs.md b/content/en/projects/brs.md deleted file mode 100644 index e1909b5..0000000 --- a/content/en/projects/brs.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title : WSO2 Business Rules Server -weight : 27 ---- - -### WSO2 Business Rules Server - - [Product BRS (Archived)](https://github.com/wso2-attic/product-brs)
- -WSO2 BRS was a lightweight and easy-to-use Open Source Business Rules Server that allowed business decisions to be exposed as secure and reliable web services and integrated with an organization's application integration infrastructure. As a maintainer and release manager of this repository, I had the opportunity to contribute to its development and maintenance. However, the product is now deprecated. \ No newline at end of file diff --git a/content/en/projects/java4bpel.md b/content/en/projects/java4bpel.md deleted file mode 100644 index 2692cab..0000000 --- a/content/en/projects/java4bpel.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title : Java4BPEL -weight : 28 ---- - -### Java4BPEL Extension - - [java4bpel](https://github.com/hasithaa/java4bpel)
- -Java4BPEL is an extension for Apache ODE and WSO2 BPS that I developed. It introduces a new BEPL extension activity that allows Java libraries to be invoked using BEPL. This extension activity enables the integration of Java code within the BPEL process flow, providing greater flexibility and customizability. I'm proud to have developed this extension and hope that it has proven useful for those using Apache ODE and WSO2 BPS. diff --git a/content/en/projects/metcat.md b/content/en/projects/metcat.md deleted file mode 100644 index 0a4ba85..0000000 --- a/content/en/projects/metcat.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title : MetCat -weight : 40 ---- - - [metcat](https://code.google.com/archive/a/apache-extras.org/p/metcat)
- -The MetCat project was aimed at developing a metadata catalog that could be integrated with the Apache Airavata project. The project's primary focus was on capturing metadata from workflows and assisting in scalable metadata management and user-defined queries. While the project is now deprecated, it was a valuable learning experience and an opportunity to contribute to the development of an important tool in the scientific community. diff --git a/content/en/projects/ode.md b/content/en/projects/ode.md deleted file mode 100644 index 42ab5c8..0000000 --- a/content/en/projects/ode.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title : ODE - A WS-BPEL Engine -weight : 26 ---- - -### ODE - - [Apache ODE (Forked)](https://github.com/wso2/wso2-ode)
- [Apache ODE (Retired)](https://ode.apache.org/) - -This repository contains the WSO2 maintained fork of the retired Apache ODE project, which was a WS-BPEL compliant web services orchestration engine. As a developer on this project, I had the opportunity to work on its development and maintenance. While BPEL has less traction now and the parent project is retired, I'm always happy to answer any questions you may have about it. Feel free to contact me anytime. diff --git a/docs/blog/index.md b/docs/blog/index.md index f505f72..749d244 100644 --- a/docs/blog/index.md +++ b/docs/blog/index.md @@ -8,8 +8,8 @@ Here are some of my recent community engagements, blog posts and talks. Stay tun ## 2025 -- **[From Visual Flows to Power Programming: The Ballerina Integrator Journey (Video)](2025/wso2con-ballerina-integrator.md)** โ€” WSO2Con Barcelona 2025 -- **[Programming Languages and Compilers (Video)](2025/wso2-tech-conf-compilers.md)** โ€” WSO2 Technology Conference 2025 +- **[From Visual Flows to Power Programming: The Ballerina Integrator Journey (Video)](2025/wso2con-ballerina-integrator.md)** โ€” WSO2Con Barcelona 2025 ยท [Related project โ†’](../projects/index.md#ballerina-integrator) +- **[Programming Languages and Compilers (Video)](2025/wso2-tech-conf-compilers.md)** โ€” WSO2 Technology Conference 2025 ยท [Related project โ†’](../projects/index.md#ballerina-compiler) ## 2023 @@ -18,7 +18,7 @@ Here are some of my recent community engagements, blog posts and talks. Stay tun ## 2022 -- **[Introduction to Ballerina - A Cloud Native Programming Language (Video)](2022/meetup.md)** โ€” Feb 2, 2022 +- **[Introduction to Ballerina - A Cloud Native Programming Language (Video)](2022/meetup.md)** โ€” Feb 2, 2022 ยท [Related project โ†’](../projects/index.md#ballerina-compiler) ## Older diff --git a/docs/css/extra.css b/docs/css/extra.css index 1b47d2c..954fe0b 100644 --- a/docs/css/extra.css +++ b/docs/css/extra.css @@ -195,13 +195,13 @@ iframe { padding-left: 1.25rem; } -.timeline-entry .tags { +.tags { font-size: 0.75rem; color: var(--md-default-fg-color--lighter); margin-top: 0.35rem; } -.timeline-entry .tags span { +.tags span { display: inline-block; background: var(--md-default-fg-color--lightest); color: var(--md-default-fg-color--light); diff --git a/docs/index.md b/docs/index.md index 73999ef..83f5273 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,7 +7,7 @@ hide:
-# Hasitha Aravinda +# Hasitha Aravinda Thilakarathna ## Architect ยท Compiler Developer @@ -21,19 +21,23 @@ Outside of work, I enjoy playing Dota 2. --- -## Talks +## Blog & Talks ### [From Visual Flows to Power Programming: The Ballerina Integrator Journey](blog/2025/wso2con-ballerina-integrator.md) -WSO2Con Barcelona 2025 +WSO2Con Barcelona 2025 ยท [Related project โ†’](projects/index.md#ballerina-integrator) ### [Programming Languages and Compilers](blog/2025/wso2-tech-conf-compilers.md) -WSO2 Technology Conference 2025 +WSO2 Technology Conference 2025 ยท [Related project โ†’](projects/index.md#ballerina-compiler) ### [Introduction to Ballerina โ€” A Cloud Native Programming Language](blog/2022/meetup.md) -CodeSeekers Endless Programming Languages Meetup ยท 2022 +CodeSeekers Endless Programming Languages Meetup ยท 2022 ยท [Related project โ†’](projects/index.md#ballerina-compiler) + +### [Ballerina Identifiers: A Simple Guide](blog/2023/ballerina-identifiers.md) + +### [Setup Ballerina GitHub Action](blog/2023/setup-ballerina.md) [All posts โ†’](blog/index.md) @@ -49,7 +53,7 @@ CodeSeekers Endless Programming Languages Meetup ยท 2022 ### [WSO2 Business Process Server](projects/index.md#wso2-bps) ยท 2012โ€“2016 -[All projects โ†’](projects/index.md) +[More about me โ†’](projects/index.md) --- diff --git a/docs/projects/index.md b/docs/projects/index.md index f4477cf..a62a77a 100644 --- a/docs/projects/index.md +++ b/docs/projects/index.md @@ -1,8 +1,8 @@ --- -title: "\U0001F680 Projects" +title: "About Me" --- -# :rocket: Projects & Work +# :rocket: About Me ## [WSO2](https://wso2.com) ยท Architect โ€” Integration BU ยท Compiler Developer โ€” Ballerina Platform @@ -10,7 +10,7 @@ title: "\U0001F680 Projects" :material-school: BSc in Computer Science and Engineering (Hons), University of Moratuwa, Sri Lanka -
Ballerina Compiler Design Language Specification WSO2 Integrator Workflow Java WS-BPEL BPMN SOA Web Services Linux OOP
+
Ballerina Compiler Design Developer Experience Low-Code Editors Pro-Code Editors WSO2 Integrator Workflow Integrations Java WS-BPEL BPMN SOA Web Services
--- @@ -31,11 +31,11 @@ I currently own and lead the design and implementation of workflow support for B
2024 Q3 โ€” 2025 Q3 ยท now WSO2 Integrator
-### Ballerina Integrator / WSO2 Integrator (BI) { #ballerina-integrator } +### Ballerina Integrator / WSO2 Integrator : BI { #ballerina-integrator } :material-link: [WSO2 Integrator โ€” Ballerina Integrator](https://wso2.com/integrator/ballerina-integrator/) -**Ballerina Integrator (BI) is a developer tool for building integrations, including APIs, file processing, event-driven workflows, automation, and more.** +**Ballerina Integrator : BI is a developer tool for building integrations, including APIs, file processing, event-driven workflows, automation, and more.** It provides a unified low-code and pro-code developer experience within the same tool, enhanced by robust visual aids to represent various aspects of the integration, such as: diff --git a/layouts/partials/head/metadata.html b/layouts/partials/head/metadata.html deleted file mode 100644 index 183b554..0000000 --- a/layouts/partials/head/metadata.html +++ /dev/null @@ -1,25 +0,0 @@ - -{{ if not .Site.IsServer }} - - -{{ end }} - - - - - - - - -{{ if .Site.Params.description }}{{ end }} - - {{ .Title | humanize | title }}{{ if ne .Title .Site.Title }} - {{ .Site.Title | markdownify }}{{ end }} - - -{{ with .OutputFormats.Get "RSS" }}{{ end }} diff --git a/layouts/partials/home/projects.html b/layouts/partials/home/projects.html deleted file mode 100644 index fbcbc23..0000000 --- a/layouts/partials/home/projects.html +++ /dev/null @@ -1,100 +0,0 @@ -{{ with .Site.GetPage "/projects" }} -
- -
-

- {{ .Title | markdownify }} -

-
-
- {{ $totalProjects := (len .Pages) }} - {{ $numberOfProjectsToShow := .Site.Params.home.numberOfProjectsToShow | default $totalProjects }} - {{ range $index, $element := .Pages.ByWeight | first $numberOfProjectsToShow }} - {{ $width := "302x" }} - {{ $columWidth := "is-one-third" }} - {{ if .Site.Params.projects.useTwoColumns }} - {{ $columWidth = "is-half" }} - {{ $width = "490x" }} - {{ end}} -
-
- {{ if .Resources.ByType "image" }} - - {{ end }} -
-

- {{ .Title | markdownify }} -

- {{ if .Params.project_timeframe }} -

{{ .Params.project_timeframe }}

- {{ end }} -
-
-
- {{ end }} -
-
- {{ if lt $numberOfProjectsToShow $totalProjects }} - - {{ end }} -
- - - {{ range $index, $element := .Pages.ByWeight | first $numberOfProjectsToShow }} - {{ if not .Params.external_link }} - - {{ end }} - {{ end }} - {{ partial "top-icon.html" . }} -
- -

-{{ end }} diff --git a/layouts/shortcodes/year.html b/layouts/shortcodes/year.html deleted file mode 100644 index 27a8827..0000000 --- a/layouts/shortcodes/year.html +++ /dev/null @@ -1 +0,0 @@ -{{ now.Format "2006" }} \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 7a280fc..de8bf14 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,10 +1,11 @@ -site_name: Tech Blog - Hasitha Aravinda +site_name: Blog - Hasitha Aravinda site_url: https://hasithaa.github.io/ site_description: Hasitha Aravinda's Tech Blog theme: name: material favicon: img/favicon.png + logo: img/favicon.png palette: - scheme: default primary: indigo @@ -56,8 +57,6 @@ markdown_extensions: nav: - Home: index.md - - Projects: - - projects/index.md - Blog: - blog/index.md - Ballerina Integrator Journey: blog/2025/wso2con-ballerina-integrator.md @@ -66,3 +65,5 @@ nav: - Ballerina Identifiers: blog/2023/ballerina-identifiers.md - Ballerina Meetup: blog/2022/meetup.md - My Old Blog: blog/old.md + - About Me: + - projects/index.md diff --git a/static/img/ballerina_logo_dgrey_png.png b/static/img/ballerina_logo_dgrey_png.png deleted file mode 100644 index 440eb9c47cb4015de3ed65206185e9e16dc8b3ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1887 zcmb7_dpOe#8^*wR>0 z7+Z5HKg6CK8;Zy?$JZ&RJl=ob_pkSJUHAR{Ue|qnuj~8YegCYB{XR(*Nf->a&(Xog z4F(edcD&mj(VZ=W=V|Q-a29*s7JL1c-Tz5p`se36aoJEe7k5|@a&%tShhr6Qz&!gY zllZqeJ9p={m*{{Gfx)EY{xc#yg1Ai>OuX9B=FItsyqVmo+EOI^o-JN5xBdHM>r^jjxtH?3QNrXiJMdTpQsa|v#cZMatc-uaMj z6nOL)(@v6Rj^7xsDLNHqU^nJUqcMImE*&DfeqB)1=oq&V4eB$9cxgAM7xm2hJ+_-U zGDkA$>JR4zAC@Kaj2YeD;Gmf8`$1y5Xh*O=TfG~9J2tGu+mKf$jTYx~yOTaB0Wq`M z6Gs3a^^l;y5KLe?2~`9I`z zaqHvn_Xf%jVzA&y>I;N9PE=N=1ntPb(iF#0{Z`9Nouk zbP_2p0+(EgRFs?vBLlAEBRqJtOkY#7erpgq;pemD%0@$tt@*UV%C^`3Gu6f=x7XwW z6uk{j@kuY7sMK;cR1(e1(0vJ{9S~-wG z_fwk>p_FYubYBWl`LT#flQ9tXG#aD77y?yJ(EL!!{JF{ZA z3*M4oDEs;{O&Ko+j#D0G9YNsPdCE-ky!s*T(u~83g6Pt}4}*kp>!DKsN{7c-PRM)c zD4i^MRO*IxYWFx|bi zA;=4LYo4+9d4EhDPBVemBj*z=U_sN3 zp1BI}@`Z%Y`P2eJ*u&Ir%FR8qqgFD#U2HnwmR(5r2?G>@UrX`OksPu=84-G@wF#^D ziQeYn)nV}}U)0H62~GKBe|yXpBseyAdvt!e*c)+~Z|YgL`rO@38q<(%aZXG0qxHdL zk4s<39wA!3ae;nq!8dgSPiv8f*B4sHu{~lxolX)c(rs;z&VAn=TbsZPMZ35ekG52` z`0rb4&sZ{lvGpXS#73f_=OhEAp7~uSKc;7iR%=HHE$r29_#x~7+9A_72>lcyTR(1U zug3F%_*WlJ>Sx=VtbrMpMKYhec16uD=x|T*pB&$e^912T;cFO9QsAH5cgPqbQ3JTg zo!Rn^J-BYUCeW-5Q2hR-eiJdWaRK*V2ylF(Mi^8T*}Qwon>z CU7U^p diff --git a/static/img/favicon.png b/static/img/favicon.png deleted file mode 100644 index 6c3eddedae1e5ddf9e1b2d9db13b36d5367ad3d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4276 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 WYjMiQrBiMI0000