Ruby
From Zero to App with Bridgetown: The Rapid Prototyping Framework

Summarized using AI

From Zero to App with Bridgetown: The Rapid Prototyping Framework

Alberto Colón Viera • October 07, 2024 • Boulder, CO

In the talk titled From Zero to App with Bridgetown: The Rapid Prototyping Framework, presented by Alberto Colón Viera at Rocky Mountain Ruby 2024, the focus is on harnessing Bridgetown—a next-generation progressive site generator designed for rapid prototyping of web applications. Viera begins by discussing the challenges of effectively communicating complex user experiences among diverse teams, including engineers and product managers. He highlights the limitations of static mockups and traditional design tools, and introduces Bridgetown as a solution to these issues.

Throughout the presentation, Viera outlines several key points:

  • Introduction to Helencare Project: As a Staff Software Engineer at the Centers for Medicare and Medicaid Services, he shares insights from a project aimed at improving healthcare outcomes through data-driven care.

  • Rapid Prototyping with Bridgetown: The speaker details how Bridgetown facilitates the creation of fully functional prototypes that can interface with external APIs. Its ability to render server-side routes adds flexibility and interactivity to static sites.

  • Project Development Journey: The presentation narrates the journey from a conceptual design to a functional prototype, describing the complexity of integrating various technologies and verifying identities in healthcare.

  • Recognizing the Importance of Prototyping: Viera emphasizes the significance of creating prototypes to explore potential solutions and validate user experiences before committing to full-scale app development.

  • Bridgetown's Features: He discusses features such as integrated routing with Roda, allowing developers to create API endpoints easily, dynamic file-based routes, and built-in automation capabilities, which enhance development productivity and application performance.

  • Community and Frameworks: The speaker advocates for the Ruby ecosystem's evolution, underscoring that more frameworks can lead to a more vibrant development community. He presents Bridgetown as a versatile tool within this ecosystem.

In conclusion, Viera reflects on the positive impact of prototyping in developing applications, stating it helps uncover risks while fostering collaborative team efforts. He invites developers to explore Bridgetown further as a robust solution for web development while introducing the ongoing developments at the Centers for Medicare. The presentation serves as both an introduction and an encouragement for developers seeking to innovate in their web projects using modern tools like Bridgetown.

From Zero to App with Bridgetown: The Rapid Prototyping Framework
Alberto Colón Viera • October 07, 2024 • Boulder, CO

Have you ever struggled to communicate a complex user experience to a diverse team of engineers, designers, or product managers? Static mockups and design tools can only take you so far.

Join me to learn how you can use Bridgetown – the next-generation progressive site generator – as a rapid prototyping framework to solve these problems. I’ll show you how to harness Bridgetown’s Roda-powered server-side rendering capabilities to build fully functional prototypes that integrate with external APIs.

Whether you're an engineer looking to communicate your ideas more effectively, a product manager seeking to validate complex flows, or simply curious about Bridgetown's capabilities beyond static sites, this talk will inspire you to leverage this powerful tool for your next project.

Rocky Mountain Ruby 2024

00:00:13.639 I haven't done this in person since 2019 in the pandemic so I don't even know how you do this anymore so um this is a
00:00:20.920 small room but still a little bit intimidating um so well I'll be talking today uh from zero to app with brid down
00:00:28.240 the rapid prototyping framework and hopefully by the end of this talk you have learned more about Bridgetown you're curious to build and try it out
00:00:35.399 and build things with it so let me Begin by introducing myself
00:00:41.360 um so my name is Alberto I'm a Staff software engineer at the centers for Medicare and Medicaid services uh which
00:00:47.800 is a division of the United States Department of Health and Human Services um so just I work for the government and
00:00:53.600 I'm here to help but um for real um and and I'm a Civic Technologies and health
00:00:58.800 it nerd and obviously I'm a ruby Enthusiast so I'm originally from Puerto Rico
00:01:06.799 so so um I know you're like really looking to hear about Bridgetown but
00:01:12.159 I'll ask you guys to bear with me so let me begin with a story I want to like connected ODS so you can see how bridon
00:01:19.799 was super helpful for us and how like maybe it can also be a tool you can adopt within your
00:01:25.960 projects so as I mentioned earlier I'm part of a team at the center for for Medicare uh we're working to transform
00:01:32.600 the US Healthcare by enabling outcome driven care and empowering decision makers with the data they need I guess
00:01:38.560 like what does that mean Point language so it means that we work with patients doctors Healthcare organizations and
00:01:44.119 even health plans and enable them with the Health Data they need right if it's a patient you can get access to your
00:01:49.840 data um if you're a doctor or an organization like a healthare organization you can probably access
00:01:55.719 your patients data right um and the idea the whole goal is to improve how Healthcare is delivered and coordinated
00:02:01.560 for all of us right through data and analytics so how do we impact patients
00:02:06.600 so we've develop an ecosystem of API products we use a standard called Fast Healthcare interoperability resources
00:02:13.680 which is the standard we use for sharing data um it allows like different systems especially in healthcare that are like all disconnected to actually integrate
00:02:21.239 um and then we Empower patients with their access to their health data and doctors and organizations and other uh
00:02:26.959 others in the healthcare space as I mentioned so um I'm going to talk to you today
00:02:33.239 about data at point of care um so this is one of our projects one of our portfolio products um so for the past
00:02:40.959 few months since February this year I've been leading this effort um and data the
00:02:46.720 point of care or DPC for CH wants a simplifi the way all of us can share and access our medical history right the idea is that we connect closer to you
00:02:53.440 know the doctor's visit at the doctor's office and like make your data available I mean you're a Medicare patient of
00:02:59.360 course like this is the the this product for Medicare uh in release so the idea is that doctors can actually see their
00:03:05.799 patients data and see what's happening in like this very disconnected a disj disjointed system um just to give an
00:03:12.840 example you know when the next Healthcare emergency happens the next pandemic imagine that having access to
00:03:18.000 this data can mean life or death for you right um so we want to augment Healthcare experience for all medical
00:03:24.200 patients through heal data and analytics and then we do this through Health Data
00:03:29.519 uh data and analytics as I mentioned right and basically these apis so we're in production we can do this today we
00:03:35.799 actually do this with a a thousands of patients but then we have a problem
00:03:40.920 right um so the problem is like we we have on boarded a a few hundreds of organizations at this point like 100
00:03:48.080 organizations and and we go through this process but there's a a real problem we going to solve which is like how do we
00:03:54.439 know someone's a doctor or they represent a doctor you know how do you know that how do you know your doctor's legit a doctor right is an honest
00:04:00.480 question so it is really hard in the United States to figure that out because of there's no centralized mechanism but
00:04:07.280 this is like in a diagram like the the problem like you know a doctor comes to us says like hey I want to access your data uh my patient data um it's like who
00:04:15.680 exactly are you it's like I'm Dr Jose it's like wait what which Jose right so
00:04:21.680 how do we answer provide an answer to these questions so in an N show this is the problem we have how can we on board
00:04:27.800 doctors using a digital and secure verification a process so I guess you wondering I said
00:04:33.639 this is working this in production we can do this with doctors but like what's stopping us so I don't know if you have heard this phrase before do things that
00:04:40.960 don't scale um this phrase is it's been coined uh by Paul Graham one of the YC
00:04:47.759 combinator Founders um and basically the idea here is that you can you should probably do things manually to some
00:04:54.199 point some extent to test your idea and figure out how to actually solve it right and this is the approach we took
00:05:00.240 the team before me like this is what they we did um we prove it's needed we prove it works we prove doctors want to
00:05:07.000 get access but now we don't know how to do this at scale right like how do we automate the process so this is a good
00:05:12.360 problem to have right basically we have product Market fit you could say um so this is why like we went to like go down
00:05:20.039 uh you know get in in a room design an amazing system and look into steps you
00:05:25.319 probably come up with like something like this or even more complicated um that's a lot of self to build right if
00:05:30.919 you want to do like an end to end solution so there's a lot of things still to figure out as I said an experiment so what if we test the
00:05:37.520 extremes what are the risky parts of this process right and how do we try that out um so we basically came up with
00:05:43.199 like this minimal viable product which is like uh our version of the portal basically it does the extremes which is
00:05:50.120 like can you create a user account register as a doctor and then if those
00:05:55.479 two things are true we give you access to this API and the data so you know there's a few answer questions we need
00:06:01.160 to answer is this a real human when a user account comes in uh are you really a doctor are you really a good doctor by
00:06:07.840 that I mean you know are you a doctor that is not committing like you know Mal practice or something that should not be
00:06:13.720 engaging with patients um so we got the team like perfect let's do it let's
00:06:19.680 build it so we got like all our tools as you usually do for sofware development um sketch figma mural all the things
00:06:25.800 right and we ended up here um it's like we fig F out there's like different systems we could use this is a
00:06:32.000 complicated domain um we're using something called login.gov we're going to use that which is uh it's a r univers
00:06:38.800 application by the way it's a block here for that team R team at the general Services Administration um this is like
00:06:44.400 Al zero but like run by the government um kind of cool um and then um basically
00:06:52.520 like they have like all these designs and all these apis and open ID connect and all these standards that we need to use right and then here we have on my
00:07:00.039 side like my team of Engineers designers product people like trying to put it all together in an experience that doesn't
00:07:05.599 really suck um so there's a lot to figure out a lot of prototyping we ended up like in this messy space of like you
00:07:13.120 know oh that screen should not be there because actually when you look into the open ID connect Center this is the what
00:07:19.199 you get that's a response what if you verify someone's and Agy and it fails and you need to like explain to you know
00:07:25.479 it needs to be understandable by designers engineers and everyone you know why the return like the thing that
00:07:31.479 an API Returns what does it translate in terms of like your user experience so Al just say designing is
00:07:38.080 hard right and I don't mean design as the act of using figma or sketch I mean design as you know the creative act of
00:07:45.840 Building Systems that depend on other systems right that have like all these inputs and outputs and
00:07:51.520 dependencies um especially when you're designing systems that you know have policies and Regulation and a bunch of
00:07:58.400 other constraints that affect those inputs and outputs of your solution right this is an image from Jessica Care
00:08:04.639 on sesy she gave a wonderful keynote drewby 2019 I encourage all of you to
00:08:10.080 watch it it's really cool and fun so um I guess this creative act of
00:08:17.520 Designing right um for me I think this this phrase resonates with me about what that
00:08:24.159 process looks like and this is from Brett Victor he's a former Apple engineer I think his title was like
00:08:30.720 human interface inventor um he gave this talk many years ago inventing on
00:08:36.599 principle and he talks about like the act of designing software and creating interfaces and he said this he said like
00:08:43.440 creators need an immediate connection with what they create you need to build and play with the ideas through this act
00:08:49.920 of creating and like seeing them and that's how like new ideas emerge and new ideas
00:08:55.560 evolve so if this resonates for you as it did for me me it's probably because
00:09:01.440 um you know code is my medium I I cannot figma well I cannot do figma well you
00:09:06.880 know um there's a lot of benefit from those tools uh I think they have a place but for me it is not really the right
00:09:13.720 tool to express these ideas I ended up like putting together like Erb templates
00:09:20.160 like a a static website generator to like come up with designs and bring this to the conversation of my team so if
00:09:26.640 you're like me right that code is your medium then I introduce you to bridg
00:09:33.560 sown we made it here so um hello rcky Mountain Ruby so this is like your
00:09:39.680 default website I mean I customize it says AO to you all wonderful people but um this is like you know uh Bridgetown I
00:09:48.800 guess we were talking last night uh at the speaker meeting and uh it came up a
00:09:54.480 couple times like the Rocky Mountain Ruby website it's a Bridgestone website right and we probably know I mean does
00:10:00.640 anybody in here have heard have you heard about bridon before a few hands not many have you
00:10:07.519 heard about jeo yes okay
00:10:13.360 um so anyway the Rocky Mountain Ruby website is actually a Bridgetown site
00:10:19.640 that is true but uh I think Bridgetown you know is the underdog of the one of
00:10:27.360 the underdogs in the ecosystem right I think I think all of us may think that it is just yet another static website
00:10:33.560 generator right uh which it is but there's a lot more hidden behind it um this is the bridg down website which you
00:10:41.120 can access at Bridgetown rb.com uh this is like the edge version because this
00:10:46.480 team is actually uh testing they're like on beta 2 of what's going to be brid down 2.0 so there's a lot of cool stuff
00:10:53.720 happening there um and as I said maybe you know bridan or you have heard about it as yet another side generator however
00:11:01.360 as you can read here like there's a lot more to that than that right um it says
00:11:06.959 it's a Next Generation Progressive side generator and full stack framework powered by
00:11:12.800 Ruby and it has like amazing like tools and and ingredients inside so as you can see the words static side are actually
00:11:20.959 absent from this description right um it it's really not there so let me tell you a little bit
00:11:27.880 about Bridgestone uh so it was created by Jared white in early 2020 uh it
00:11:34.279 started as a fork of jeo right the battle tested static side generator we'll know uh it switched the builtin
00:11:41.920 web server inside to use rack puma and Roa on top of it um some time ago and
00:11:48.480 then it started innovating on top of it so it follows the convention over configuration principle you know all of
00:11:55.360 us that have worked with with reals we we know this concept right and this idea
00:12:00.920 that Frameworks when Frameworks aim to minimize the amount of decisions we need
00:12:06.120 to make as developers we can become more productive right it's not that we don't make decisions and the framework makes
00:12:13.040 decision makes the decisions for us is that we can actually invest our time on the right decisions that we should be
00:12:18.839 making right hopefully the decisions on the project and the problem and the domain we're working on right and not
00:12:25.320 like you know getting lost into a maze of gems and other things right right um
00:12:31.199 as I said it's a great uh it's great for static content generation uh and then it
00:12:36.399 follows the jamstack framework which is basically JavaScript apis and markup right uh but it takes it to the next
00:12:43.880 level um on what they call the dream stack uh which is a funny name um and it
00:12:50.680 stands for delightful Ruby expressing API and markup right um and basically in
00:12:56.760 simple words it allows Bridgestone to breing interactivity to an application right to your old static site using
00:13:04.680 Roa so this is you know just to take a look at it real quick right this is like
00:13:09.760 has a CLI as many other tools um it's wrapped nicely around that you can create project I realize I have a a typo
00:13:17.560 at the bottom I me the Bridgestone start command copy pasting but you basically
00:13:23.440 installed the gem I'm using like the 2.0 beta 2 gem here which has some new
00:13:28.480 features uh you basically create a new site using running bstone new my my
00:13:33.519 website or my however you want to call your project you get into your project right and you run bin Bridge SL
00:13:40.040 Bridgetown start it starts up has a that like Rocky Mountain rub like template
00:13:45.720 that you saw earlier and then you know I guess just to connect the dots from like static
00:13:51.320 side generation you probably know this you've done this probably many times before it can do the same things you can
00:13:56.519 do with jeo you can create a page out of markdown website uh file right it has
00:14:01.680 this like upper portion called front matter you can add like variables and things there and then under it you have
00:14:08.680 like in this case markdown written text it gets converted to like HTML right so
00:14:14.639 out of the box it gives you most of the things jle gives you already like has Pages Post front matter collections data
00:14:21.600 files layouts static files I'll go into those because probably you know those or have played with them um but bridon new
00:14:29.920 stuff like it supports multiple template agents kind on a more like easy built-in
00:14:36.000 way so you can use like Erb Serbia and others has like plugins that can extend it um it brings this concept of
00:14:43.000 automations which is like a nice way to basically like in in uh integrate
00:14:48.160 libraries or do things within your project using Ruby um has like a nice plugin system and there's like many
00:14:54.399 plugins from like bringing turbo to using SQL and doing other things on top
00:14:59.440 of your project um I think it leverag this is not a mentioned feature on the
00:15:05.720 website but I I I put it here because the it provides the allows to use pure
00:15:11.519 Ruby files to represent data resources and other things it has a very nice way
00:15:16.839 of like embracing Ruby at its core it has an opinion take on web components
00:15:22.519 and hydration there's a lot of cool stuff um I won't be talking about it today but like that you can see Jared
00:15:28.600 and others have like recorded videos and demo it and lots more so it comes with a bunch of features and things uh but you
00:15:36.639 know there's more than meets the eye I guess you may have seen this uh meme of like three raccoons and a trench code
00:15:42.600 right um so like inside that content site generator trench code right and
00:15:49.440 maybe that's all we see all we know there's a lot of stuff hidden inside right uh first you have like rack the
00:15:56.880 Ruby web server interface right the the thing that allows rails and many of the Frameworks to exist on top of it as I
00:16:04.120 mentioned has Puma the fast concurrent web server for Ruby and rack which is like production tested right like all of
00:16:11.000 us probably use this and finally you have Roda which makes it so easy to develop
00:16:16.800 applications um has anyone here uh raise your hands again like have
00:16:22.399 you heard about Rota few hands have you heard about Sinatra
00:16:29.360 a lot more hands everyone okay um so Roa was created by Jeremy Evans and it aims
00:16:35.519 to be a simple and productive framework for building applications so basically it gives you a DSL it's kind of similar
00:16:42.040 to has a sinra esque uh look and feel and then you know usage it's very
00:16:47.639 similar it feels like that and it gives you this DSL to Define uh what's called a routing tree and you can use that to
00:16:53.560 model your API or your application right um this is a sample
00:16:59.440 uh Rota app um basically this is like a config rup Ru file as a sample this is
00:17:06.640 like one of the very basic examples from the their website you basically require
00:17:12.120 Roa you then Cate create this class class app which extends the class Roa
00:17:19.000 and that gives you like a lot of magic and superpowers right brings the CSL
00:17:24.120 that you can use to basically create this block and within this block you model your resources your end points
00:17:30.200 your kind of like your controller right um in this example for example uh if you
00:17:35.559 go to like the root of this project of this web address right if you were running it uh and you go to the root it
00:17:42.880 will like redirect you to SLO and then it defines SL hello right
00:17:48.880 it has a nice verbos way to do this and within this hello routing tree uh you
00:17:56.120 then can have slw right and it responds like hello world or it just responds
00:18:02.520 hello if you just go SL hello right so this is very basic just to give you an example what Roa looks like so if you
00:18:08.480 have used cat before this may like kind of look familiar um and then you run it right at
00:18:15.760 the at the bottom you have like run up free app basically you like start up this rack application and comes to
00:18:22.760 life so road comes with batteries um and by that what I mean is that Roa has a
00:18:30.240 ton of plugins and things that that are available out of the box plus the things
00:18:35.480 that the community have developed throughout the years um this is like the top where like the plugin section starts
00:18:42.559 under documentation it continues for a few screens down uh because it has like so many so many plugins and and other
00:18:51.080 libraries and basically if it's making sense to you right now if jul Roa had a baby it's rown right um this is kind of
00:19:00.159 like what you're getting out of it not just a static side generator it has like the genes of both if it makes sense
00:19:06.200 right you can definitely do great static site generation and have like an amazing website like the Rocky Mountain Ruby or
00:19:12.360 you can actually start doing interactive things so let's look at that like the cool stuff so server side rendering so
00:19:21.000 um this is a quote from the Bridgetown website I'm going to read it it says
00:19:26.640 like server s side rendering known as SSR has made its piece with static side generation and we're increasingly seeing
00:19:34.039 a hybrid architecture emerge in tooling throughout the web industry so this is what they're doing with um within
00:19:42.480 Bridgestone with Roa and all the other things that I mentioned so one of the first cool things that Roa gives you
00:19:49.039 it's it's called server rendered routes and basically remember that
00:19:54.120 example from Roa that I showed you earlier it's like you can bring that into your Bridgestone project right so
00:20:00.840 Bridgestone lets you create your own rot base API routes so if you go when you create your project if you go to the
00:20:07.679 server SL routes directory there um again convention over configuration this
00:20:13.240 is the way they have approaches there you can create your Ruby file in this case like preview. RB and there you
00:20:19.440 create this like class right very similar to the rad example we saw where you can basically Define a normal API
00:20:27.200 endpoint as you would do with Roa you need to use this um naming convention routes column column in this case
00:20:33.960 preview which is you know the file name and then you extend the Bridgetown rack
00:20:39.400 routes class and that gives you all the routes capabilities inside your Bridgeton project in this specific route
00:20:47.000 and then you define it with the same like DSL and code snippet you know route
00:20:52.080 to R here on SL preview right you do the thing here like this example I'm not
00:20:58.240 going to get into it but it's just using other Bridge down capabilities right about how content is generated and the
00:21:04.039 files that is producing but you can do technically anything here you can like check a database hit an API you can
00:21:12.279 anything you can do on a normal like application reals application or anything else through your controller
00:21:17.880 like you can also have that logic here wait there's more so this is one of
00:21:24.520 the coolest things that bridgstone gives you that I I really like this is like kind of very very neat uh so it's called
00:21:32.240 file based file based Dynamic routes and so bridg down gives you the ability to write what's called file based Dynamic
00:21:39.000 routes which basically allows you to integrate imagine having an Erb file where you can integrate like the Roa
00:21:46.200 definition with the view template in a single file right and then you put these files within a specific location within
00:21:53.880 your project and suddenly you have like these like different like layers of controllers and
00:21:59.080 and and vendors and stuff like happening in your
00:22:05.559 application so there's these two sections that I mentioned at the top you'll see in a
00:22:11.080 second like a rotor block section at the top right that has some special delimeter and then underneath you'll
00:22:16.840 find like the Roa the normal like Erb template uh that can use an axis right
00:22:23.159 and can be manipulated by the rot block so let me show you like with an example
00:22:28.240 here you we have so you see this Dash Das Dash minus percent um so this is
00:22:34.720 like the delimiter they came up with so this is an Erb file in this case items.
00:22:40.520 Erb and then within this Erb file this top portion it's like this Roa definition that you add it kind of
00:22:47.679 similar like the front matter concept right but for actual like Roa logic
00:22:52.919 which is kind of cool um and then you define this and you will see that you have this render with uh method here
00:23:00.480 like a part of a DSL that it gives you and basically that's what you use to inject the front matter or anything else
00:23:07.440 right within the the the renderer for your Erb file in this case the
00:23:14.600 underneath you just like do a normal Erb file as you would do right and in this case it's like iterating through this
00:23:20.799 list right um so you can see that items is available uh to the Erb View and then
00:23:27.720 it just lists the elements right so this is very simple just to give you a sense like what it would take to like print
00:23:33.600 out a list of elements but like again you can do a lot of other like more interactive uh designs with
00:23:41.360 it and last it has something new that's called colable objects basically um this
00:23:47.400 is a bridg down 2.0 feature so it's not available on Bridgetown one so it's like only available on the beta version and
00:23:54.400 basically it gives you like the ability to have like a rot C like have a cable a that within your Ro block you can um
00:24:01.720 call so let me let me show you an example so here you have this upper class my RSS feed this is like how can I
00:24:09.159 create an RSS feed right in an easy way for let's say for your website so to
00:24:14.600 keep it in that context so you create this class called my RSS feed you include Bridgetown Roc colable which is
00:24:21.559 like a model they make available and then you define this def call uh method
00:24:27.360 it has the app op debatable and then you can access requests response and many other things within the RX framework um
00:24:34.559 and Roa and then in this example you know it says like is an exercise left to the reader imagine you have a method
00:24:41.080 that get goes to a database or parses out you know at Le of elements you're want to render as an RSS feed and then
00:24:47.960 you put that into the feed XML variable which is going to be an XML in this case because of the way RSS works and then
00:24:54.679 you have a rotus snippet right below in your remember those initial serers side
00:25:01.240 render routes that I show you you can have there a route the trender that has this when you do rget to my feed my-
00:25:08.679 feed. XML it just calls that class my S my RSS feed. RNE right and it calls the
00:25:17.120 call method immediately and then it gives you that output so this is a very a composition model method here that's
00:25:23.919 pretty nice so I'm looking forward to all the things you could probably do with this within bridg down if the future haven't played it with it too
00:25:30.320 much but anyway bringing it all together so this is what I'm calling the bridge sway I don't know that they use that
00:25:36.760 term but uh this is my opinion about it so so again this is like the file structure right of what a root a project
00:25:43.919 would look like but this is this is more than just a file structure right uh this is like how convention over
00:25:49.480 configuration looks for bridg sown so you have like a config folder you have like this front folder where you can
00:25:54.919 like create components and do some cool things uh you have this server folder where you can create these routes that I
00:26:00.159 mentioned right um and create them as individual Ruby files uh because this is
00:26:05.320 using Roa um I'm not I didn't talk about it before but like you can create your own like custom Roa plugins within your
00:26:12.320 project and just like inject them to the RO application so you can like use everything that exists plus you can even
00:26:18.799 Implement your own and then within the source directory you have like components you have data which is very
00:26:24.840 similar to jeo uh your layouts you know the traditional posts for like pages and
00:26:29.880 stuff that gets automatically generated and then you have this underscore routes folder that basically allows you to use
00:26:36.120 this like file based uh Rota composition method that I show you and then output
00:26:43.600 which is like where all the output of the static site is generated and all the other configuration files for Ruby es
00:26:50.679 build and everything else so I guess the bridge down Advantage I would describe it as like you know it's a static side
00:26:57.120 generator an asteroids it's powered by Roa which gives you the server render routes it has these file
00:27:02.720 based Dynamic routes it now includes these cable objects for Roa and then you
00:27:07.880 can leverage the existing Roa plugins the new bridgs plugins and many more enhancements right and everything wrap
00:27:14.640 up in a nice command line interface with a healthy dose of convention so coming back to the story
00:27:20.080 right because I I was talking about prototyping talk to you about Healthcare I took this D Tour on Bridgetown and
00:27:27.080 where do we go now so so we built a thing so I mentioned this DPC project
00:27:32.919 right so I you remember those like different screens with designs and workflows and all those mappings um so
00:27:42.279 youing bridg down right and a lot of like file based Road renderers like we
00:27:47.760 basically built this application this started like as a static website uh just to convey some of the design decisions
00:27:53.720 that we wanted to discuss and then as I started playing with Bridgetown I started like wiring it up right and then
00:28:00.240 I actually connected this to like the login.gov sandbox and I was able to use like their identity verification in
00:28:05.360 sandbox mode and test it out and we were able to like prototype and test and like see firsthand how the experience evolv
00:28:13.240 like as you go through all the different Journeys right um so I'm going to like
00:28:18.840 for the sake of time I'm going to like fast forward this let me see I need to look over here it does all the identity
00:28:24.960 verification and then uh you it takes you back oh no
00:28:33.159 mouse takes you back to um here this is you're coming back to
00:28:40.159 our app and this is where we're checking like are you a doctor would you verify your identity we hit our internal apis
00:28:46.480 which we mock out using also like this Roa power capabilities within uh bridgstone and then we were able to like
00:28:53.360 map the interface and actually wire it in many ways to like the real soundbox apis when were available
00:29:00.279 um so I found like Roa to be super helpful and pretty quick to you know
00:29:05.519 prototype with these ideas and built it um so I guess the elephant in the room is May you're wondering like but did you
00:29:11.279 build an app with Bridgetown right which I spoke with some of you last night about this too right and we were
00:29:17.559 debating this um so not exactly we build a prototype with bridg down right um but
00:29:24.799 this is this is a more complicated decision right uh we already manage another rails application we like have
00:29:31.240 other rails other systems that could be rails application what could argue so we know that rails is a framework that
00:29:37.279 works we we building a team tours around that and so it makes sense to stay still
00:29:42.440 use um rails right for like all the things that we're doing and the things that we have right but I think there's a
00:29:49.240 a place to explore like what can all of us do with Roa or even with Bridgetown so Bridgetown allowed us
00:29:56.440 allows us to prototype ideas using code in HTML as the medium we were able to start with static design which can then
00:30:02.480 be wired up and made interactive and like really interact with other apis it allowed us to test ideas and understand
00:30:08.559 the problem our team was working on right like this this domain and then we were able to build a functional
00:30:13.679 prototype application using the power of rad out within bridg down so I mean all to say that product
00:30:19.919 develop is a creative team activity which requires like sharing ideas criticizing and involving
00:30:26.600 them has anyone seen this picture before no hands ah one hand two hands
00:30:34.360 there uh so this is a picture of tin toy this is uh one of the very early CGI
00:30:41.640 pictures short films that was ever created was created by Pixar in 1988 is it a pretty
00:30:48.880 baby not too pretty right um so Ed cadmo one of the Pixar
00:30:55.919 Founders has this idea of like ugly babies and he says ideas are like ugly babies right um if we look at this image
00:31:03.080 and we say like oh man that baby's ugly right um so like probably Pixar would
00:31:08.960 have stopped innovating uh under Technologies and ideas and like all the movies and things they have developed
00:31:15.679 and produced afterwards like we have never seen them right um so like judging this effort because it was an ugly idea
00:31:22.399 was like pretty incorrect take on it right which they didn't do they knew this uh very well
00:31:28.480 um and Ed says that ideas are like ugly babies right they're fragile like a baby
00:31:33.799 um when we're born we don't look super pretty at all we're like all swalling and stuff right um and we we all grow
00:31:41.159 and evolve right to the wonderful humans we're here and ideas should not just be judged but how them look at the early
00:31:49.679 stages so I think this is true right and I don't know if you have heard this idea also plan to build everything twice when
00:31:56.840 I was first introduced this idea it was um attributed to the mythical manm moth
00:32:02.159 um so my take is that if we assume this is true for a second right um I think that prototyping the risky and difficult
00:32:08.600 parts of your application is the more coste effective way of building some things twice right where you test it out
00:32:15.559 early you ditch it and it helps you form the right abstractions and like no what
00:32:20.600 are the trade of you're making at this particular stage and better understand things um so can I use Bridgetown to
00:32:26.600 build a serious application so I have a bestseller for you all uh from O'Reilly it
00:32:33.039 depends um so I mean as every other answer in Tech you know my answer is
00:32:38.240 like it depends I think there's two important questions to ask ourselves would anyone question whether Jal is
00:32:44.679 Battle tested I don't think anyone will question that we we use that we at scale
00:32:50.600 right everywhere go to gith her Pages netlify all those things um can you build a robust appc
00:32:57.840 appliation just using Roa yes you can there's many people that have done that you know Jeremy Evans has has talked
00:33:04.639 about this for a long time um so I think if the answer to these two questions is yes so I think yes you can the question
00:33:12.279 is you know what is the right decision for your team for your domain for your problem for what you're doing um I think
00:33:19.080 there's a real of applications small medium I don't know if large too that probably can be built using Bridgestone
00:33:26.200 leveraging all the r capability it has um maybe those small apps uh can grow
00:33:31.760 and be bigger than that we can imagine today uh so to me bridon is an example the power of Ruby right um I love Ruby
00:33:40.279 it's like this backpack that I goes with me all the time everywhere and provides me with amazing tools that I can
00:33:46.799 experiment and play with everywhere I go right so we need more Frameworks we need to
00:33:53.039 you know test out more things this is what's going to make this community uh more vibrant and and evolve and this is
00:33:59.840 what ruby does great which is making developers all of us all of you happy wherever that you can be the happiest
00:34:05.760 right whatever that framework is um so wrapping up stay tuned you can go to
00:34:11.040 dbc.ca.gov this is like a legit Government website this is our project
00:34:16.280 so if you're curious about it you can go and learn about it um we're going to we're very busy it seems very busy as I
00:34:23.119 as I'm here speaking about this uh wrapping up our implementation and development so we're looking looking forward to launch uh next year after
00:34:30.440 Christmas um and then if you're Medicare in or have family members that are uh in Medicare so talk to them and their
00:34:37.399 doctors about dated fromont care uh and the things they could be doing uh so anyway thank you and that's wrap
Explore all talks recorded at Rocky Mountain Ruby 2024
+22