Recent Posts
Archives

Posts Tagged ‘Meta’

PostHeaderIcon [KotlinConf2025] Build your Kotlin and Android apps with Buck2

Sergei Rybalkin, a software engineer from Meta, introduced the audience to Buck2, an open-source build system that is now equipped to support Kotlin and Android applications. In a concise and informative presentation, Rybalkin detailed how Buck2, a successor to the original Buck system, addresses the need for a fast and scalable build solution, particularly for large-scale projects like those at Meta. The talk centered on Buck2’s core principles and its capabilities for accelerating development cycles and ensuring consistent, reliable builds.

The Power of a Scalable Build System

Rybalkin began by outlining the motivation behind Buck2. He explained that as projects grow in size and complexity, traditional build systems often struggle to keep up, leading to slow incremental iterations and hindered developer productivity. Buck2 was designed to overcome these challenges by focusing on key areas such as parallelism and a highly opinionated approach to optimization. The talk revealed that Buck2’s architecture allows it to execute build tasks with remarkable efficiency, a crucial factor for Meta’s own internal development processes. Rybalkin also touched on advanced capabilities like Remote Execution and the Build Tools API, which further enhance the system’s performance and flexibility.

A Blueprint for Optimization

The presentation also shed light on Buck2’s philosophy of “opinionated optimization.” Rybalkin clarified that this means the system takes a firm stance on how things should be done to achieve the best results. For example, if a particular feature or integration does not perform well, the Buck2 team may choose to drop support for it entirely, rather than provide a subpar experience. This selective approach ensures that the build system remains fast and reliable, even as it handles a multitude of dependencies and complex configurations. Rybalkin underscored the fact that the open-source version of Buck2 is almost identical to the internal solution used at Meta, offering the community the same powerful tools and optimizations that drive one of the world’s largest development teams. He concluded by encouraging the audience to try Buck2 and provide feedback, underscoring the collaborative nature of open-source development.

Links:

PostHeaderIcon [DevoxxPL2019] User Login

Successful Login

  • Navigate to login page
  • Enter username “user” and password “pass”
  • Verify dashboard visible

Steps code in Java:

@Step(“Navigate to login page”)
public void navigate() {
// code
}


Analytically, markdown's familiarity lowers barriers. Implications: accelerates onboarding, but lacks Gherkin's structure for some.

## Taiko Integration: Scriptless Web Automation
Taiko, a Chrome DevTools wrapper, enables intuitive interactions sans selectors. Dmitry demos on TodoMVC: open URLs, write inputs, click elements.

Code:

const { openBrowser, goto, write, click } = require(‘taiko’);

await openBrowser();
await goto(“todomvc.com”);
await write(“Buy milk”);
await click(“Add”);
“`

Analytically, natural APIs reduce fragility from UI changes. Implications: speeds test creation, though Chrome exclusivity limits cross-browser testing.

Practical Application: End-to-End Testing Flows

Combining Gauge specs with Taiko steps, Dmitry automates todo flows: create, complete, filter.

Specs drive discussions; Taiko handles executions reliably.

Analytically, this revives BDD by minimizing overheads. Implications: boosts test reliability, encouraging widespread use.

Organizational Adoption: Challenges and Strategies

Despite simplicity, resistance persists from legacy habits. Dmitry advises gradual introductions, emphasizing communication benefits.

Implications: transforms testing from chore to collaborative asset, enhancing product quality.

Links: