https://forms.gle/Vxa7ZDmkb5Hv6fc78
Ryan Edge
According to StackOverflow's 2024 survey
Cognitive load is how much a developer needs to think in order to complete a task.
Confusion costs time and money.
Intrinsic
The inherent level of difficulty associated with a specific problem we are solving.
Extraneous
The level of difficulty imposed by factors not directly relevant to the problem we are trying to solve.
Tradeoffs
Tradeoffs
Benefits | Drawbacks |
---|---|
Great for product teams | Not great for functional teams |
Vertical knowledge sharing | Increased cognitive load |
No horizontal feature juggling | Context switching |
Should translate to faster development cycles |
Constructing a system using a single language.
Swift + Vapor
What else?Wait, what is Dart again? And what is Flutter?
Feature | Like |
---|---|
Ship the framework with the application | Game development |
Multiplatform targets | React Native, Xamarin, etc. |
Extensible component system | Like web, Android, iOS |
import 'package:flutter/material.dart';
void main() => runApp(const MainApp());
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: Scaffold(
body: Center(
child: Text('Hello World!'),
),
),
);
}
}
routes/hello/[name].dart
import 'package:dart_frog/dart_frog.dart';
Response onRequest(RequestContext ctx, String name) {
final request = ctx.request;
return Response(body: 'Hello $name!');
}
Serverpod is an open-source, scalable app server written in Dart for the Flutter community.
Vercel but for Dart
class ExampleEndpoint extends Endpoint {
Future<String> hello(
Session session,
String name,
) async {
return ‘Hello, $name!’;
}
}
var result = await client.example.hello('World');
Build, deploy, and scale your app's backend. All in Dart. All without leaving your IDE.
import 'package:celest/celest.dart';
@cloud
Future<String> sayHello(String name) async {
return 'Hello, $name!';
}
Infer infrastructure from application code
The cloud-aware application framework
import 'package:nitric_sdk/nitric.dart';
final publicApi = Nitric.api("public");
profileApi.post("/hello/:name", (ctx) async {
final nameArg = ctx.req.pathParams["name"]!;
ctx.res.body = "Hello, $name!";
return ctx;
});
Cognitive load is heavy when it's heavy.
Monoglot development can reduce cognitive load and increase productivity
Many approaches support different needs for full-stack development in Dart
workshop: https://bit.ly/3WVO7h8
slides: https://chimon.dev