Ian warns Caleb about making that micro charting library

Ian warns Caleb about making that micro charting library

Released Wednesday, 29th January 2025
Good episode? Give it some love!
Ian warns Caleb about making that micro charting library

Ian warns Caleb about making that micro charting library

Ian warns Caleb about making that micro charting library

Ian warns Caleb about making that micro charting library

Wednesday, 29th January 2025
Good episode? Give it some love!
Rate Episode

Episode Transcript

Transcripts are displayed as originally observed. Some content, including advertisements may have changed.

Use Ctrl + F to search

0:00

All right, we're rolling. All right,

0:03

welcome. Welcome to the show

0:05

Ian Landsman. Hello invited myself

0:08

on. You invite himself on

0:10

and we're using his Riverside.

0:13

This is notes on work

0:15

featuring Ian Landsman talking

0:17

me down. He's like, your message was

0:19

something like. I'm a third of the

0:22

way into these podcasts and I need

0:24

to convict him and do this. I

0:26

got to the first two. The third

0:29

one about how you were building a

0:31

micro charting framework and I was just

0:33

like, I got to get on the

0:36

horn to this guy. If you listen to

0:38

the first two, you get what's going on.

0:40

Yes. So I think I have a good

0:42

idea. Okay. So where do we start

0:45

here? Like, all right, where I'm sitting

0:47

right now. After these podcasts, I'm

0:49

feeling pretty good. I was feeling

0:51

pretty bad and now I'm feeling

0:54

pretty good. Okay. Tell me why

0:56

I shouldn't feel good. So, so

0:58

with the conclusion, I couldn't get

1:00

to the third one. So the

1:02

third one, did you finish? I'm

1:04

gonna build a micro line only

1:07

charting framework thing. Yeah. Okay.

1:09

Alright, so here's my point. It's

1:11

going to be so sick. I forgot

1:13

a few problems with that. Okay. Just

1:15

in the first two podcasts, right? Like

1:18

it's incredibly complicated. And a hundred times

1:20

you're like, do we need that? Do

1:22

we need labels? We don't need labels?

1:25

Do we need, you know, labels? We

1:27

don't need any bars. Do we need all

1:29

this stuff? I guess here's the thing to me.

1:31

Anybody who's really using a chart

1:34

library, who actually had data to

1:36

chart in a serious application? needs

1:39

the full charting library. I

1:41

don't know. So I'm looking

1:43

at stripe and they literally have

1:46

a line that you can offer

1:48

the points. Oh God. And get

1:50

a little tool tip of what

1:52

data is at what points. And

1:55

they have two labels in the

1:57

x-axis that says the beginning time.

1:59

and the end time and that's

2:02

what they have for like most

2:04

of the app. Well they have

2:06

bar charts, I've seen bar charts,

2:08

there's line charts, so there's multi-line

2:10

line charts, multi-line easy, got it,

2:12

okay. Listen, the only things, ticks,

2:14

and labels, which you said ticks,

2:16

or maybe not gonna have it,

2:18

I can't do his ticks. It's

2:20

a big one. I literally can't

2:22

do this. Writing writing stuff. In

2:24

the SVC is this a problem?

2:26

It sounds like it was maybe

2:28

a problem. I have text and

2:31

text. Yeah, yeah, like dates and

2:33

times, numbers and things. The generating

2:35

of it's not necessarily a problem,

2:37

it's the spacing of it. It's

2:39

not, they're not divs. They don't

2:41

adjust to each other. They're just

2:43

painted over each other. Right. And

2:45

I say to put them on

2:47

the X-axis. Yeah. You have to

2:49

figure out what you're going to

2:51

do with all that. There's a

2:53

lot of stuff in it. No,

2:55

I don't, because I'm not doing

2:57

ticks. What do I do with

3:00

a chart with no ticks? So

3:02

a lot of charts have no

3:04

ticks. They have the beginning and

3:06

end date or kinds. Men and

3:08

Max, why? The people who need

3:10

such a ridiculously simple charting thing

3:12

are coin base, stripe, lemon. No,

3:14

they're not. Stripes are not like

3:16

that. What are you talking about?

3:18

We're on it right now, we're

3:20

pulling on it. I was just

3:22

in there looking at this. But

3:24

I will look again. There was

3:26

bar charts. You always see multiple

3:29

kinds of charts. I do actually

3:31

see these bar charts. Yeah, I

3:33

just saw them. I literally saw

3:35

them before I got on the

3:37

call. If you go on reporting,

3:39

go on reporting. Show me. Okay.

3:41

Let me to it. Yeah, I

3:43

can't show you, but just tell

3:45

me. Morning, I was just in

3:47

there. Okay, so if you go

3:49

reporting overview, there's bar charts with

3:51

numbers, year over year, smaller, your

3:53

percentage difference. Reporting, overview, gotcha, okay.

3:55

Okay, now you click that little

3:58

box that expands it and you

4:00

get a line chart over the

4:02

bar chart, you get tooltips over

4:04

everything, you get ticks, you get

4:06

labels, you get interactivity when you

4:08

click it. Okay, okay. A lot

4:10

of stuff in there. Yeah. y-axis

4:12

to go with your left-hand y-axis?

4:14

So yeah yeah yeah okay right

4:16

right there are there are things

4:18

there are some things like that

4:20

that I think particularly on stripe

4:22

when I see something and it's

4:24

like I could mostly do that

4:26

but then oh like on stripe

4:29

they have they'll show like a

4:31

progress line Where like they'll put

4:33

a lot like render half a

4:35

line it extends. It's like yeah

4:37

estimated continuation or stuff like that

4:39

like that stuff is like oh

4:41

That's that last bit and I

4:43

wouldn't even know how to do

4:45

that in a normal charting library

4:47

like so All right, let's look

4:49

at this bar chart I think

4:51

bars are within my future I

4:53

think I could do them right

4:55

now if I thought about it

4:58

hard enough Their ticks are these

5:00

ticks on this bar chart this

5:02

so bar charts use categorical data

5:04

categorical x-axis so you all are

5:06

going to render every single one

5:08

and if there's not enough room

5:10

you can so the way that

5:12

I'm building it let me get

5:14

this I don't know if this

5:16

helps you at all because I

5:18

know I know what you're saying

5:20

I know what you're thinking this

5:22

is good but this I'm going

5:24

to just completely run you off

5:27

yes so mine is going to

5:29

be driven by like SVC's that

5:31

you deal with as a developer

5:33

and it's not that bad it's

5:35

like you sort of build your

5:37

own SVC So you would say

5:39

template because all these other libraries

5:41

are basically doing that except just

5:43

removing you one like Recharts have

5:45

you have used recharts at all?

5:47

No, I don't know about recharts.

5:49

So basically you say like chart,

5:51

like that's my, this is what

5:53

Chadsey does as well, like so

5:56

you got like chart component, then

5:58

inside of it you'll have line,

6:00

and online you can specify stroke,

6:02

stroke width, stuff like that. Right.

6:04

That's just a wrapper around a

6:06

path, literally an SVC path, and

6:08

all those attributes get passed down.

6:10

And that's fine, but it's just

6:12

like an unnecessary removal of like

6:14

one level, where so mine's gonna

6:16

be like. line, but it's literally

6:18

a path element. So you can

6:20

add tail-in classes, you can add

6:22

whatever attributes you want. So what

6:25

this does is give you like,

6:27

now you're in the SVC. So

6:29

you can use any CSS you

6:31

want, you can add to the

6:33

SVC. Like you can add your

6:35

own deaths at the top of

6:37

like linear gradients and transitions and

6:39

whatever you want to apply. So

6:41

what this means and why I

6:43

told you this is because if

6:45

you're using my thing. If you're

6:47

rendering bars, and there's not enough

6:49

room for the labels of the

6:51

x-axis ticks, you can rotate them.

6:53

And then they'll just be rotated

6:56

and they'll fit nicely together. It's

6:58

like you just render it and

7:00

you go, oh, that doesn't look

7:02

right. Rotate. And so I have

7:04

to do a lot of work

7:06

in this. Yeah. Like way more

7:08

than with chart JS or equivalent

7:10

library. So the problem, I mean,

7:12

so chart, this is the other

7:14

thing, is like, what's the alternative.

7:16

I mean a little bit, not

7:18

in serious anger. I mean, high

7:20

charts a lot. Okay, high charts.

7:22

Chart JS a little bit. High

7:25

charts is a paid thing. Okay.

7:27

Charts and charting libraries suck because

7:29

there's 10 million configuration options. A

7:31

lot of configuration. But you don't

7:33

even understand. You can simplify. See,

7:35

to me, this is the whole

7:37

thing. Where does Caleb provide value?

7:39

Okay. It's the attraction and design

7:41

and simple application. Yes, give me

7:43

the API, give me, make it

7:45

awesome. Like, don't, like, do you

7:47

building a charting library? is zero

7:49

value, there's already a million charting

7:51

libraries. They all have 6,000 closed

7:54

issues. When are you going to

7:56

work on the 6,000 closed issues

7:58

that are going to come up

8:00

inevitably once you release this thing?

8:02

And people are like, it doesn't

8:04

render in this weird way, right?

8:06

Like, all that stuff. The date

8:08

stuff was one thing. I always

8:10

think it's the date thing too.

8:12

But this is even worse. This

8:14

is high five times better. No,

8:16

I think this is five times

8:18

better. No, because I can't. No,

8:20

because it doesn't have the charts.

8:23

You're not going to build, you

8:25

just said you're not going to

8:27

build all the charts people need.

8:29

Are you going to build a

8:31

scatter plot? Are you going to

8:33

build a pie chart? No way.

8:35

Okay, these are the types people

8:37

you use in real applications. When

8:39

you need those, you put in

8:41

D3 or whatever. Like, I'm not

8:43

even going to be able to

8:45

make a wrapper around any chart.

8:47

It's going to look like the

8:49

rest of flux. And obviously it's

8:51

going to open up like there's

8:54

some way to pass in the

8:56

like config stuff. If you want

8:58

to get down to the like,

9:00

I need to set my chart

9:02

JS or whatever library, like I

9:04

need to get deeper in there,

9:06

great, you could pass in the

9:08

config. But the like passes data

9:10

from Laravel into it, past, you

9:12

know, the feaming default to looking

9:14

like flux. Like I think the

9:16

base case could be magical without

9:18

you building a chart library. Which

9:20

is a ton of work. And

9:23

it will never ever ever ever

9:25

ever be as good as these

9:27

other chart libraries. Right. Because you're

9:29

not going to put that kind

9:31

of work into it. It's not

9:33

going to be as powerful as

9:35

these charting libraries. But that's what

9:37

you need in the chart library

9:39

though. But it will be simpler.

9:41

But nobody wants that. Who wants

9:43

a simple chart library that goes

9:45

one thing? I do. That's no.

9:47

This is Ian. This is where

9:49

we are fundamentally misaligned. Are you

9:52

ready? Yes. I'm ready. I want

9:54

a minimal charting library. I always

9:56

have any web app that I've

9:58

been in and building. I go,

10:00

uh-huh. I need a chart at

10:02

the top of this table to

10:04

show revenue over time. Yep. That's

10:06

almost always what it is. Maybe

10:08

usage over time, maybe memory over

10:10

time, but it's something over time

10:12

and it's usually money. And I

10:14

go, what am I going to

10:16

use? Okay, well, pull in chart

10:18

JS. I have to learn the

10:21

words data set and I have

10:23

to get in like to tick

10:25

callbacks because I don't want. when

10:27

you go to chart j s

10:29

and you pull in the default

10:31

it is loaded and looks like

10:33

not what you want exactly same

10:35

thing with return same thing with

10:37

d3 then you need one little

10:39

configuration and now you're like in

10:41

the whole thing again you know

10:43

I guarantee you are capable of

10:45

making that clean and easy for

10:47

me I hate it I make

10:49

it clean and easy for me

10:52

because I want to be able

10:54

to reach in there and get

10:56

all the bag of tricks and

10:58

you're never going to build those

11:00

bag of tricks which means that

11:02

I know I will always have

11:04

to use a different charting library

11:06

I will never use fluxes and

11:08

I think a lot of people

11:10

will not be able to use

11:12

fluxes because as soon as I

11:14

need literally anything that's not the

11:16

ultimate most simple use case it's

11:18

a flux charting library is totally

11:21

used. Okay then let me what's

11:23

both I'm gonna I'm gonna steal

11:25

man you or at you or

11:27

at I'm going to at least

11:29

go there. And I want you

11:31

to go here. I'm going to

11:33

go there though. Okay. I don't

11:35

know what to use. Because of

11:37

the library or something? Yes. Yeah,

11:39

I mean, I don't know what

11:41

to use either. I mean, there

11:43

is no great option here. You

11:45

know, if it was in react,

11:47

I would use recharts. Recharts to

11:50

me, feels good. It's good enough.

11:52

It's D3 under the hood. It's

11:54

a fairly lightweight wrap around it.

11:56

they have these transitions you might

11:58

need whatever but and you and

12:00

they have all the extra configuration

12:02

that is like a little weird

12:04

like you know that you might

12:06

want to customize so so right

12:08

there why don't you just do

12:10

that it's order yeah but poor

12:12

Oh, I think at that point,

12:14

I think that's what I'm doing.

12:16

I think I'm building it. But

12:19

you're not wrapping in D3 and

12:21

giving us all the fun different

12:23

charts and stuff, right? Oh, so

12:25

I am oscillating back and forth

12:27

between using D3. But yes, on

12:29

the last episode that you heard.

12:31

It's no D3. This is the

12:33

thing about D3. And that, like,

12:35

if you, even just on recharts,

12:37

they say, I think on their

12:39

home page. So they say, okay,

12:41

built on topics SVG elements with

12:43

a lightweight, don't throw the ticks

12:45

in my face. It's so funny.

12:48

The most like basic charting feature.

12:50

The ticks, right there, checks inside

12:52

the box. Recharts. built on top

12:54

of SVC elements with a lightweight

12:56

dependency on D3 sub modules. So

12:58

I'd have to dig into their

13:00

actual repository to see what they're

13:02

doing. But my guess is they're

13:04

kind of doing what I'm doing,

13:06

which is like, I don't know,

13:08

let's just see if I don't

13:10

know, it's too long for me

13:12

to actually look at one of

13:14

these bar charts that TSX. Yeah,

13:16

I don't know. They're probably doing

13:19

what I'm doing, which is using

13:21

the D3 math. Some of it

13:23

is really valuable and some of

13:25

it is just like you could

13:27

have like three functions built by

13:29

clients that are going to do

13:31

this. So anyway, what I'm saying

13:33

is, I can't... I mean, this

13:35

recharts, recharts has 2,800 closed issues

13:37

and 440 open. Chartjas has 6,800

13:39

closed issues and 400 or something

13:41

open. These are huge, gigantic libraries

13:43

that do a lot of stuff

13:45

and have a lot of weird

13:48

edge cases. The scope that they

13:50

like take on is insane. But

13:52

your but the super simple scope

13:54

is just so not like this

13:56

it feels not aligned with flux

13:58

to me. I guess that's my

14:00

problem. Like I don't view flux

14:02

as like this is the ultra-

14:04

simple, you know, components for your

14:06

really stupid, simple projects. Don't play

14:08

anything realness. This is not for

14:10

real projects. This is for your

14:12

very simple, don't, nothing complicated, super

14:14

easy. I don't know, dude. I

14:17

don't know. I mean, you know,

14:19

no, no, no, no. No, it's

14:21

definitely not it. It's, like, with

14:23

the date picker. Take the date

14:25

picker as not. The date picker

14:27

does everything you would get out

14:29

of any other date picking library

14:31

that you could find. Yes, exactly.

14:33

Yeah, exactly. That will not be

14:35

true of charts, right? It will

14:37

not be true of charts, right?

14:39

It will not be true of

14:41

charts. It will not be true

14:43

of charts. It will not be

14:46

true. So that's the difference. So

14:48

you took two months and built

14:50

dates, pretty much. with the other

14:52

day things out there. I'm sure

14:54

there's some edge cases, whatever, blah

14:56

blah blah. But it's like 90%

14:58

of the other ones. You are

15:00

not going to be 90% on

15:02

this chart library in six weeks

15:04

to edit these big chart libraries.

15:06

Tell me. Unless you are. I

15:08

mean, maybe it will be. It

15:10

seems very unlikely. This chart is

15:12

going to be done by the

15:14

end of the week. Line charts,

15:17

multi-line line charts with coverable tooltips

15:19

and basic ticks. Zero dependency and

15:21

cumulative weight of like two kilobites

15:23

will be done by the end

15:25

of the week. Won't have ticks.

15:27

Right, won't ticks? Do I have

15:29

anything? This is the thing I

15:31

need you to at least acknowledge.

15:33

The majority of web apps and

15:35

any time I've needed charts and

15:37

web apps, I have only needed

15:39

what I have just described to

15:41

you. What I could have done

15:43

in a week. I build, right,

15:46

that's 100% not true. We have

15:48

like five different types of charge.

15:50

We have really complicated charge. We

15:52

have a heat map. You have

15:54

a multi-area area one. Yes. We

15:56

have three lines with a ball.

15:58

underneath like so I don't I

16:00

have not built the real app

16:02

that's just like here's a single

16:04

line line chart or whatever that's

16:06

an ultra simple line chart I'm

16:08

not I've not personally worked on

16:10

something like that. So and what

16:12

you're describing heat maps and whatever

16:15

like there's no that's not like

16:17

a off-the-shelf component lab you know

16:19

I'm not gonna offer heat maps.

16:21

Like what if you have to

16:23

build it in this scenario? That's

16:25

my point. I need why you

16:27

don't need to build it all?

16:29

I need a junk drawer. Like

16:31

what I need is I want

16:33

this charting library, but I also

16:35

want as soon as you reach

16:37

the end of it, you go,

16:39

I need D3. And then there's

16:41

some way for you to just

16:44

use D3 or whatever or chart.

16:46

I mean, you could just use

16:48

chart. You could use any of

16:50

these things and I could provide

16:52

like. Yeah, if you want to

16:54

hear a simple one, right? But

16:56

then you also have some type

16:58

of Caleb, nicely integrated chart JS

17:00

thing, that's probably only going to

17:02

take you another week or whatever,

17:04

right, to come up with a

17:06

reasonable API and the components and

17:08

whatever to pass things around and

17:10

let you get at the underlying

17:12

config if you need to, makes

17:15

it look like the rest of

17:17

flux and react to its beaming

17:19

and blah blah blah blah. Then

17:21

you have that then you have

17:23

like basic charts and advanced charts

17:25

advanced charts. I'm shipping you over

17:27

here charts That's a good a

17:29

good way to but with a

17:31

helper with a little helping hand

17:33

so that you don't have to

17:35

spend three days figuring out how

17:37

to like make chart jas look

17:39

like the rest of your completely

17:41

flux app like Caleb's already done

17:44

that part. It all works nice

17:46

together and if you need all

17:48

these other feet on that I'm

17:50

not recommending chart jas, but Whatever

17:52

one of them right obviously there's

17:54

multiple ones But there's an integration

17:56

there that feels Organic if you

17:58

have a more advanced need. There's

18:00

not a lot of good stuff

18:02

outside of react so it's like

18:04

hard to just pick one like

18:06

we could use chart j s

18:08

it and so this is my

18:10

fear is is like if you

18:13

look at filament charts they I'm

18:15

pretty sure they use chart j

18:17

s and the experience of using

18:19

it is like you just have

18:21

it's so much configuration and whatever

18:23

like somebody who needs the thing

18:25

just needs the thing and they're

18:27

gonna eat whatever shit they need

18:29

to eat so that's 100% true

18:31

but it's like my answer I

18:33

can't part of that's each chart

18:35

It doesn't make any sense. Like

18:37

you should do that yourself. You

18:39

need this. Well, you're a web

18:42

developer, just do it, you know,

18:44

like. Sure. But I feel like

18:46

that's not the promise of flux,

18:48

right? I don't know. I don't

18:50

think the promise is like everything

18:52

you'll ever need ever in a

18:54

web app. It's like, you know,

18:56

I don't know. Maybe it is.

18:58

But like, I don't know if

19:00

it's reasonable for me. Like if

19:02

you go to Shadsey, I mean,

19:04

This doesn't apply. If you go

19:06

to Shadsey-N, like, they're showing you

19:08

simple bar charts, simple line charts,

19:11

like, very simple, out of the

19:13

box, what you need. But of

19:15

course, this whole argument, the points

19:17

moot because you can just configure

19:19

recharts. I mean, you go on

19:21

their charts, there's all kinds of

19:23

stuff. There's pie charts, there's all

19:25

different colors, there's stacked bar charts,

19:27

there's a stacked bar charts, there's

19:29

negative. Bar charts, there's like hundreds

19:31

of charts in here. I, radar

19:33

charts. Yeah, at the very top

19:35

navigation click charts. There's radar charts,

19:37

there's radial charts. I was just

19:39

in the chart component. Yeah, yeah.

19:42

Yeah. Yeah. This is what I

19:44

want. I want this. All right.

19:46

Let me build it for you.

19:48

Yeah. Go with me here. Yeah.

19:50

First chart. We have to just

19:52

unfortunately describe this. listener. First chart.

19:54

This I could show, oh well,

19:56

I guess, I don't know if

19:58

we're going to put the video

20:00

out. No, no video. No video.

20:02

That's just, yeah, that's fine. So

20:04

first chart, two lines, both have

20:06

area underneath it and categorical labels,

20:08

Jan Fab March, April, May, June,

20:11

and then horizontal, horizontal lines. Like,

20:13

yeah, and then the tool tip

20:15

with the values and the colors.

20:17

This is, this is basically done.

20:19

This to me is what I'll

20:21

have, MVP ready. Bar charts, I

20:23

gotta figure out bar charts. All

20:25

right, so this one, but this

20:27

one's doable. Like if I decide

20:29

to do bars, this is very

20:31

doable. Pie chart, this is where

20:33

I had a, so I had

20:35

a talk with Claude and Claude

20:37

thinks I, that line charts are

20:40

like 80% of the use case

20:42

like that I need, or maybe

20:44

70%, bars are like 20% and

20:46

then this pie stuff is like.

20:48

Like, and then there's a lot

20:50

of like people like there's warnings

20:52

I guess like it's not always

20:54

a good practice even to use

20:56

a pie chart like I don't

20:58

like this angle you're going on

21:00

here. People find it like confusing.

21:02

But see here's the thing that's

21:04

not that's not your issue because

21:06

are you making an educational site

21:09

for the best way to people

21:11

to chart or are you giving

21:13

developers what they've been a tool

21:15

that they can use to build

21:17

what they've been told to build

21:19

or that they think they need

21:21

they need to build or that

21:23

they need to build or that

21:25

their customers are asking help spot.

21:27

My customers want certain types of

21:29

charts. Maybe it's not the best

21:31

type of chart, right? But maybe

21:33

that's not my job to tell

21:35

them you're being an asshole and

21:37

you're being stupid. Why are you

21:40

using that kind of chart? No,

21:42

we don't have that kind of

21:44

chart because it's stupid. Why are

21:46

you doing that? I'm just going

21:48

to give them the kind of

21:50

chart they want. So like, that

21:52

I think is where to me,

21:54

like that should be your mindset

21:56

in my opinion. Oh man, there's

21:58

no bar chart that's stacked. Like

22:00

and... So you can then have

22:02

a conversation with them about why

22:04

it's dumb and Claude said that

22:06

you shouldn't use pie charts or

22:09

whatever, right? Or you can make

22:11

the sale and say, I'd be

22:13

like, yeah, we got pie charts.

22:15

Give me $600 now. Great, I

22:17

got your $600. You have

22:19

pie charts. Everybody's happy, which

22:21

is what I'm thinking is the

22:23

better option. Okay, so let's say,

22:26

let's do it. We're gonna do

22:28

it. I asked Claude what are

22:30

the non-react open source charting libraries

22:32

so D3 number one that's kind

22:34

of out like do you think it's

22:37

like a lower level thing right is

22:39

that correct level like you can't just

22:41

be like line me you know

22:43

you really have to build up

22:45

like the SVC yourself you're still

22:47

creating yeah the problem with chart

22:49

JS well one of the many

22:51

problems is it uses canvas and

22:53

not SVC okay which is like kind

22:55

of fine but makes it just

22:57

way heavier and whatever. Why do

22:59

I care? Flexible. You might not

23:02

care. I don't care. I 100%

23:04

don't care. All right. I could

23:06

imagine caring less to be honest.

23:08

Plotty. Plotty. Plotty. J. Plotty. J.

23:10

Plotty. J. Plotty. J. Ploty. J.

23:12

I mean, I guess I'll just

23:14

have to look into some of

23:16

these and see what's going on.

23:18

But I bet high charts, but

23:20

that high charts, but that's a

23:23

commercial license. Yeah, I've heard people

23:25

use high charts. I've definitely heard

23:27

of that. Whoa, dude, yeah. I

23:29

don't know. Or the recharge thing,

23:31

is there a way to, is there

23:34

a way to port it? Could you

23:36

and call do some work on porting

23:38

it? I don't know, it depends how

23:41

it's built, right? You initially said it's

23:43

a thin layer around the three. So

23:45

if it's actually a thin layer around

23:47

the three, maybe you can just port

23:50

it. Did I say thin. It's probably

23:52

a sick layer. A sick layer around

23:54

the three would be something different. Again,

23:56

I don't love that option because then

23:58

you are still maintaining it. I'll prefer

24:00

you to be maintaining the API, the

24:02

flux API to it is the thing

24:05

Kayla maintains. Not Kayla maintains a whole

24:07

charting library. Yeah. All right, go with

24:09

me. Tell me. I'll come to you

24:12

now on this. Come to me. Tell

24:14

me the world where this works and

24:16

where this is a good idea. Give

24:19

it to me. Where, which part? Your

24:21

side. Give me my side. Give me.

24:23

Yeah, give me even just a pro

24:25

of the light library. Okay, see, I

24:28

think a lot of things you think

24:30

are pros, I definitely don't think are

24:32

pros. Some of that is just built

24:35

into a thing, like developer, there's some

24:37

things that are just differences between you

24:39

and I, and that sort of like,

24:41

like a segment, the developer community of

24:44

like two groups of people. Right. And

24:46

I am firmly in this group and

24:48

proud. So like, that's a part. So

24:51

we're not going to change that. So

24:53

I guess the thing I like, if

24:55

you're saying that. If you're saying the

24:57

ultralight. thing is going to be done

25:00

next week or whatever, right? Then I

25:02

think that's definitely a benefit. That's probably

25:04

the biggest benefit to me. Because I

25:07

think you going off for two or

25:09

three months while you have like competitors

25:11

and all this stuff, you've got to

25:14

be out there selling, right? So if

25:16

you disappear to build a chart library

25:18

for three months, I think that's a

25:20

disaster. So I think in that regard,

25:23

it's like, hey, it's out next week,

25:25

it's for lines. Maybe you find out

25:27

that that truly is enough and nobody

25:30

really wants anything else. And fine. And

25:32

when they do, you just say go

25:34

obviously, you can just implement whatever you

25:36

want, just load up chart jazz or

25:39

whatever you want to do. And I

25:41

think that's fine. I guess to me

25:43

that wasn't like, you know, it's fine.

25:46

It's not exciting. It's not like there's

25:48

going to be a page on flux.

25:50

It's like, oh, would you click charts?

25:53

Like when I click charts on Shad

25:55

CNN. I'm like, damn, this has everything

25:57

I could want, whatever I need to

25:59

build, this thing has it. Whereas when

26:02

I click. on Flux, there's going to

26:04

be a line chart that might not

26:06

have ticks, and that's going to be

26:09

the whole thing, right? And so that

26:11

is not going to make me feel

26:13

like, oh, this is no matter what

26:15

criteria comes up in a year from

26:18

now, when someone says, hey, we got

26:20

this new feature, we got a little

26:22

chart, and I'm going to be like,

26:25

oh shit. Now I can only use

26:27

line charts. So now I got to

26:29

bring in another package to do a

26:32

different chart to do a different chart.

26:34

this chart is going to look totally

26:36

different than this other chart. So I'm

26:38

going to figure out, can I make

26:41

them look the same? I don't know,

26:43

like you've got this custom methodology thing,

26:45

how am I going to figure out

26:48

how to back change that into the

26:50

make it look like this new chart

26:52

yes thing I have to do or

26:54

whatever? So, you know, I think just

26:57

in terms of like overcoming objections, it's

26:59

hard when you're not going to have

27:01

a really flushed out offering there. If

27:04

this is important, maybe it's not important.

27:06

Yeah, yeah, yeah, yeah, yeah. Maybe you

27:08

shouldn't have anything. I mean, that's that's

27:10

another thing too. Like, this is a

27:13

thing that people don't think about, but

27:15

you could think about it the other

27:17

way. It's like, maybe you shouldn't have

27:20

charts at all. Right. Is it better

27:22

to have nothing than to have something

27:24

that's weak? Right. Potentially. I don't know

27:27

if that's true in this case, but

27:29

it might be. big item that people

27:31

want included. It's tricky. I agree that

27:33

that this is foolish in like if

27:36

I'm thinking about like flux as a

27:38

business and where time goes and where

27:40

users of flux want time to go,

27:43

even what I want to be doing.

27:45

It's like I don't think I want

27:47

to be like fiddling with like charting

27:49

bugs all day. I think it was

27:52

that I started on this, I think

27:54

I started on this path thinking like,

27:56

let's just see what I can do

27:59

with charts, totally open mind, and got

28:01

into it and realized like, there's nothing

28:03

good and to. do the good thing

28:06

yourself you end up pretty much doing

28:08

everything yourself anyway with D3 and then

28:10

I sort of found some things that

28:12

I was like excited about was like

28:15

wow I could the thing that you

28:17

know that speaks to me that's different

28:19

thing that I always wanted was a

28:22

super lightweight SVC charting library like how

28:24

hard could this be like a few

28:26

kilabytes give me a kill me with

28:28

the kilowites dude it matters to me

28:31

it doesn't matter it's irrelevant So, all

28:33

right, I mean, Chuck Jass, I just

28:35

saw, is tree shaking. So, in theory,

28:38

you know, only ship the kilabytes that

28:40

you use. So, I mean, right, but

28:42

with Charles, that's, it's gonna be a

28:45

lot. Like, I'm sure it's 100. Okay.

28:47

That's what the matter. Okay. So, I

28:49

get it. Yes, yeah. So you have

28:51

that. So you have the light, it's

28:54

light. But you really aren't like, like,

28:56

like, I thought the whole thing would

28:58

be rocket science. And then I opened

29:01

it up and went, a bunch of

29:03

this is very simple. I'm a major

29:05

fan. I came across in the podcast

29:07

because it's like I can't even do

29:10

ticks is kind of where we're at.

29:12

That doesn't seem like, that's like the

29:14

most basic part of the choice. The

29:17

rocket science. You're like, you're like, we're

29:19

already at rocket science for the ticks.

29:21

Like, there's a lot of other things

29:23

in there though. I was pretty breezy

29:26

until I got in the ticks. Like,

29:28

like, but even just the things we

29:30

first talked about, like the X-axis labels

29:33

labels. Yeah. Now I have to figure

29:35

out the spacing of the exact labels.

29:37

What if the data is variable? Again,

29:40

our charts, it's always variable. It's not

29:42

just like always 12 months. It's going

29:44

to be my time, it might be

29:46

48 months, might be five years, might

29:49

be one year, might be whatever. So

29:51

now I have to come up with

29:53

all the math to figure out like,

29:56

well, how wide is this thing? chart

29:58

config chart dot label I would like

30:00

to know how much configuration is about

30:02

like in some of these shad examples

30:05

like is he saying somewhere like in

30:07

this is all recharts raw are there

30:09

parts of it that are like yeah

30:12

tick formatter so it's a callback that

30:14

receives the day okay so he's there's

30:16

okay so here's a component called x-axis

30:19

for recharts okay And it's got the

30:21

key, the data key, you know, that

30:23

you're using, tick line if you're rendering

30:25

that or not, axis line if you're

30:28

rendering that. Okay, tick margin. Also find,

30:30

like, this is all stuff that can

30:32

be configured, done in an SVC, like

30:35

you can literally just size the SVC

30:37

differently. I know you don't want to

30:39

get in SVC. Sure. Min-Tik gap. Yeah,

30:41

that's where it's where it's like. So

30:44

start to get into like it's doing

30:46

so much aware of some stuff I

30:48

really want I shouldn't mess with the

30:51

recharge and see what happens if you

30:53

put like that that to be like

30:55

64 like doesn't how to you know

30:58

Yeah So then I've used in the

31:00

past two there are like you can

31:02

it'll drop off labels and things if

31:04

it needs to with some kind of

31:07

smartness, which don't always work great to

31:09

be fair. They are definitely downside there.

31:11

But what else is out here is

31:14

like a formatter. So the tick formatter

31:16

is a callback that accepts the date

31:18

object and then you are in charge

31:20

of converting a date object into English

31:23

and you would use JavaScript international date

31:25

time. Right. Formatter and whatever. So that's

31:27

like, yeah. I mean, the hard part

31:30

about my thing. is like, how would

31:32

you even, like if I create, if

31:34

I had a chart JS or something,

31:37

where am I giving you that configuration

31:39

ability? You know, where are you writing

31:41

tick formatting code? You're in the API

31:43

guy, I'm not the API guy. You

31:46

know what I'm saying though? I do.

31:48

It's like with this, you're already in

31:50

job. script so you can just pass

31:53

a callback you're already in react with

31:55

backendy stuff and live wire stuff it's

31:57

like you can't write that in PHP

31:59

because that's on the back end and

32:02

you don't on your chart to have

32:04

to like call back every time it

32:06

needs to play well label. But wouldn't

32:09

you for you send it in formatted

32:11

that's how I've always handled it. So

32:13

have you interesting have you formatted the

32:15

labels of the like do you generally

32:18

send in the labels to a chart

32:20

formatted that's what I used to do.

32:22

Yeah, that's what I would do. Generally

32:25

speaking, I mean, I don't know if

32:27

I've done it that way every time,

32:29

but that's usually how I would think

32:32

about it. I guess I'm sending, I'm

32:34

giving the chart library the exact stuff,

32:36

right, and formatted and ready to go,

32:38

and then it's charting. The part where

32:41

it gets tricky is if you have

32:43

like a thousand data points within two

32:45

months or something, you don't want the

32:48

ticks to be on a time interval

32:50

and display the time, which you can't.

32:52

No, I had, you know, like you

32:54

can't format that I had unless you

32:57

knew how many ticks would be rendering.

32:59

That's where it's true. They do it

33:01

stupidly, right? Like it's just like, well,

33:04

we can only show one and every

33:06

10 ticks. Right. So you would just

33:08

do one every 10. Like we're not

33:11

like relabling it necessarily to be grouped.

33:13

That you could do that then have

33:15

some grouping or whatever, but that would

33:17

be a separate chart. Into your heart,

33:20

Ian. Yeah, do it. What if you

33:22

have to take this at face value?

33:24

What if I could create a line

33:27

charting library and bar charting library that

33:29

did all of these things all that

33:31

automatic tick stuff all that formatting stuff?

33:33

Space stuff line multi lines areas bars

33:36

stacked bars horizontal grids vertical grids vertical

33:38

grids tooltips the whole thing what if

33:40

I could do that? How would you

33:43

feel about my approach? I mean, I

33:45

still would not prefer it. because the

33:47

end of the day if I want

33:50

a scatter chart and this doesn't offer

33:52

a scatter chart now I'm in the

33:54

place where I have to use two

33:56

different chart libraries I have to try

33:59

to make them look the same that's

34:01

always a disaster it's gonna be impossible

34:03

right so like I don't love that

34:06

I mean it's probably if you got

34:08

it more full-featured like that right like

34:10

it's you're probably capturing more of your

34:12

core use case group right like now

34:15

instead of like Maybe lines only is

34:17

good enough for like, I put the

34:19

number much lower than Claude and you

34:22

do, I mean, I think it's probably

34:24

like 30 or 40 percent, but if

34:26

you get bars and it does all

34:28

the magic stuff that you kind of

34:31

want, you know, then maybe it is

34:33

like 70 percent or something like that.

34:35

And so maybe that's enough. So I

34:38

think that gets you closer at least.

34:40

It sounds like it's like annoying that

34:42

because if you have a more what

34:45

I would call a more sophisticated or

34:47

real use case than like not real

34:49

is not appropriate right but like a

34:51

sophisticated use case which I think a

34:54

lot of people do when you're getting

34:56

into charting things you're already at a

34:58

certain level of app I think in

35:01

terms of yes not the like every

35:03

admin builder you've ever seen that's like

35:05

we have a little chart in the

35:07

top here like yeah rarely you see

35:10

that in a real apps but you

35:12

always see it in admin builders right

35:14

but in real apps you see the

35:17

40 sections single line yeah the little

35:19

single you know here's three pills at

35:21

the top of the chart and it's

35:24

a little thing like that's fine but

35:26

like in real apps you rarely see

35:28

that news case but in but you

35:30

do see like here's the reporting section

35:33

in the reporting section there are lots

35:35

of reports that show you all different

35:37

stuff. I'm never gonna, that's usually, they

35:40

have different types of charts in them,

35:42

like that's what's in the reporting section.

35:44

Yeah, dude, it's tricky. I hear what

35:46

you're saying, I'm having, you know, a

35:49

big part of this is the, this

35:51

is just the like, um, builder, addictive

35:53

thing, you know, you know, you like

35:56

to be in full control of your

35:58

code and what you're shipping. Yep. And

36:00

I gave that up with the text

36:03

editor because I feel... I felt like

36:05

there was a wall of like something

36:07

I'm unwilling and unable to do. Yeah,

36:09

this is very similar to that. I

36:12

feel like this is very similar. That

36:14

is a very complicated area. If you

36:16

really were to go all the way

36:19

down in there, that is very, very

36:21

complicated. Yep. And this feels like that

36:23

as well. To me, maybe that's not

36:25

true. I've never tried to build a

36:28

chart library. Anything over lines and bars

36:30

feels that way to me. That's the

36:32

line. falls off a cliff and yeah

36:35

but man yeah reporting I mean I

36:37

guess I hear what you're saying I

36:39

now I don't know bro don't you

36:41

think you're gonna have a ton of

36:44

bugs and stuff even just through lines

36:46

and bars but sophisticated lines of bars

36:48

if you go sophisticated lines and bars

36:51

yeah a lot of work in there

36:53

don't you think it would be these

36:55

things would be all over the place

36:58

there's gonna be things like I could

37:00

see people's data sets being like so

37:02

Bazaar that like, you know, I don't

37:04

know, one of them is like way

37:07

off the chart and it messes up

37:09

the whole chart and they're like, yeah,

37:11

definitely going to have that, you know,

37:14

negative values is something that's negative values,

37:16

you have to account for. Yep. Did

37:18

you like quadrants? What about quadrants? I

37:20

want like, I guess that would be

37:23

more for like a scatter. You never

37:25

have a line with quadrants. Would you

37:27

have a bar with quadrants? Probably not.

37:30

That's a good edge case thing, so

37:32

probably not. But negative, definitely, below the

37:34

X axis for sure. And that is

37:37

where it gets weird and bad. All

37:39

right, so this, this is, so, I

37:41

mean, when I think about that stuff,

37:43

yeah, it's, it's like I want to

37:46

tackle all that stuff, but it'll take

37:48

me three months. It's not a week

37:50

long thing. If you build a thing

37:53

with D3. You end up having to

37:55

do all that stuff yourself. Like, you

37:57

end up having to just like account

37:59

for that. I wonder what chart JS

38:02

does. Maybe I just forced myself to

38:04

spend a few hours using all of

38:06

these libraries and trying to break

38:08

them and seeing how bad their APIs

38:10

are. Yeah, I don't know, man. I mean,

38:13

I guess which way the other thing is like

38:15

you could look at it more

38:17

like that's where again, like my

38:19

upside, the kind of positive takeaway

38:21

I had of like what you're

38:23

building right now if you just

38:25

ship lines is the idea of like,

38:27

then you can find out. Sort of

38:30

at least to some degree like Hey,

38:32

everybody's like I need

38:34

more than this or everybody's like

38:36

this is fine I do think I

38:38

Don't know I think there's the

38:40

people you interacted right who

38:42

are going to tell you whatever this

38:44

is great, but I do worry I

38:46

guess that if I'm like looking at

38:49

Shad Sien and I'm looking at flux

38:51

and I got the charts page like

38:53

you just have no story for

38:55

that which maybe isn't a problem

38:57

right but maybe it is I don't know,

38:59

but it feels like it could be a problem.

39:02

No, absolutely. No, a big part of

39:04

it. At the end of the day,

39:06

it's tricky, man. This is the classic,

39:08

like, I've used this example a

39:10

hundred times, but when, like,

39:12

before, Bootstrap had themes, and I

39:14

would use, like, Edmund LTE and these

39:17

other themes, like, they kind of looked

39:19

like crap, they were really narrowly to

39:21

configure and deal with, but they did

39:23

everything. And then I remember using

39:25

bootstrap themes and feeling like this is

39:27

such a breath of fresh air. It's

39:29

like there's so much more that I

39:31

had to do. It was like clean and

39:33

minimal and simple and just didn't feel like

39:36

shit. But then I also remember feeling like

39:38

this doesn't do anything. It's just displays for

39:40

things. And I have to like, oh, if

39:42

I want to add that, I have to

39:44

build that. Like I don't even know how

39:46

to build that. So it's a balance of

39:48

like making something that feels. And that's

39:50

where Shadsey is doing it

39:52

perfectly well with charts, because

39:54

they're basically just giving you

39:56

configuration for recharts, which is

39:58

a good library. But I just

40:01

don't know of a library that

40:03

feels good like that. But maybe

40:05

chart chess isn't as bad as

40:07

you think it is. I don't

40:09

know if that's true or not.

40:11

I mean I've used a lot

40:13

and I have in Alpine components

40:15

I have a chart JS integration

40:17

and whatever and it often takes

40:19

me like I mean they used

40:21

it in pulse I'm pretty sure

40:23

and I remember helping Jess with

40:25

a lot of that chart JS

40:27

stuff and just like kind of

40:29

seeing how to wrangle it to

40:31

get it to work to get

40:33

it to work. It's at 50

40:35

lines, it's so much config, it's

40:37

gross. Anyway, I guess I just

40:39

think when I think about like

40:41

the big picture, yeah, why is

40:43

somebody going to use live wire?

40:45

Why, okay, there's no, part of

40:47

the big negatives was there was

40:49

no component library, right? Now there

40:51

is a first party component library

40:53

for live wire. Yeah. I guess

40:55

I feel like there is a

40:57

sort of. implied there's something implied

40:59

there to me that it's going

41:01

to be fairly feature complete yeah

41:03

at some point right and so

41:06

like so now I'm comparing should

41:08

I use react should I use

41:10

live wire should I use view

41:12

what are the different component libraries

41:14

everybody's on the component library tip

41:16

right nobody wants to build components

41:18

anymore I wanted it's table stakes

41:20

whatever my JavaScript reactive JavaScript solution

41:22

is I want there to be

41:24

components. So I don't have to

41:26

do that and I can get

41:28

right to my business stuff, right?

41:30

So like, I guess that's just

41:32

where I come from. It's like

41:34

when people look at all this

41:36

and they're making a choice on

41:38

a project, I just feel like

41:40

if flux, the more feature complete

41:42

flux is then the higher likelihood

41:44

they choose live wire and flux

41:46

over inertia and react. So this

41:48

is where this is where it's

41:50

different. This is what makes this

41:52

stuff hard. Is in react. you

41:54

have radics, base ui, react area,

41:56

recharts, you have, I mean I

41:58

literally, you could... just have the

42:00

react ecosystem which is incredible and

42:02

capable and polished every other command

42:04

palette built for them everything their

42:06

drop-downs their many everything is all

42:08

built but listen but listen well

42:11

hold on let me finish my

42:13

spiel finish your spiel out of

42:15

the gate you just have the

42:17

react ecosystem which is incredible and

42:19

capable and polished every other ecosystem

42:21

doesn't have that including view but

42:23

They have some semblance of that.

42:25

Right. The vanilla, JS, back-end rails,

42:27

Python, Jango, not put, yeah, whatever,

42:29

Jango and Phoenix and Laravel have

42:31

none of that. We have old

42:33

crusty J-query libraries. Nobody's building vanilla,

42:35

you know, that's just, you don't

42:37

have that, that horsepower horsepower. So

42:39

I rolled up my sleeves and

42:41

wrote. a drop-down menu and went

42:43

to the ends of the earth

42:45

on a safe dragover and like

42:47

every little piece like that. And

42:49

I think, because it's like, I'm

42:51

better off, that's the story of

42:53

flux, like I've done this, every

42:55

component you could have said what

42:57

you're saying right now about. But

42:59

I went the other direction, found

43:01

out that I can maintain giant

43:03

piles of complicated JavaScript, just like

43:05

anything else, you get the big

43:07

bugs up front and then, you

43:09

know, and then you have a

43:11

long tail of small stuff small

43:13

stuff that most people don't even

43:16

encounter. Yeah, I don't know. You

43:18

know what I'm saying? Yeah, I

43:20

don't know. See, so it gives,

43:22

I guess to me, it's like,

43:24

there's two angles there. One is

43:26

that like, Shad embraced all these

43:28

external libraries, right? And I get

43:30

what you're saying that they are

43:32

superior libraries. That's the point I'm

43:34

making is they're superior. Right. Because

43:36

Shad can throw together a bunch

43:38

of components based on top of

43:40

a bunch of open source. pretty

43:42

high quality to very high quality

43:44

libraries right you couldn't do that

43:46

and i i i don't think

43:48

I would have said that for

43:50

all things like I don't think

43:52

I would say you select to

43:54

because I think that would be

43:56

janky maybe you could but I

43:58

bet when I said that I

44:00

bet at that point I don't

44:02

think you would have said that

44:04

knowing the complexity involved I don't

44:06

know about for select to the

44:08

complexity on select to is steep

44:10

like very steep so select two

44:12

is like unmaintained though see that's

44:14

a difference like I don't think

44:16

that's true of like chart JS.

44:18

Do you know what I'm saying?

44:21

So that's there's places where you

44:23

can hedge a little bit like

44:25

the WhizzyWig. This is a maintained

44:27

thing, the tip tap or whatever,

44:29

right? And chart JS is a

44:31

maintained thing. I mean, it's got

44:33

65,000 GitHub stars. So it's not

44:35

like, oh, I'm pulling this library

44:37

that's like 800 people depend on.

44:39

So. It's not, like you're not

44:41

going way out there and taking

44:43

a huge risk. And you could

44:45

always work backwards, I feel like.

44:47

It's like, hey, if it doesn't

44:49

work out, there's a too clunky

44:51

ultimately, then as time allowed, you

44:53

could always swap it out or

44:55

build something in addition to it.

44:57

But I don't know. I just

44:59

think there's a couple of big

45:01

spots where like using libraries is

45:03

going to give you an advantage.

45:05

You're a one man show, you're

45:07

in there, you're hacking everything, you're

45:09

maintaining all this other JavaScript. That

45:11

is stuff where you couldn't, there

45:13

aren't good alternate solutions. Even the

45:15

date stuff, you know, maybe you

45:17

could have, maybe you couldn't have,

45:19

but I think, you know, you

45:21

want me over to like your

45:23

solution being superior there. I think

45:26

that makes sense. Because again, the

45:28

date stuff, I think there is

45:30

a lot of stuff that's not

45:32

maintained and things like that. You

45:34

don't want to use anything like

45:36

that makes sense. But I don't

45:38

think that's the case here. I

45:40

hear what you're saying. I hear

45:42

what you're saying, Ian, and what

45:44

am I going to do about

45:46

it? I don't know, but I

45:48

will say that I was pairing

45:50

with Josh. handly and he said

45:52

like he said like so I

45:54

guess this is the announcement we're

45:56

doing a flux 2.0 and we're

45:58

bundling a stuff bunch of stuff

46:00

together and I was like let's

46:02

just see if I can bang

46:04

out you know some charts here

46:06

real quick and so yesterday I

46:08

was pairing with him and he

46:10

said yeah he's like well you

46:12

know you need to like announce

46:14

flux too and and like we

46:16

should put a date on the

46:18

calendar for when to do that

46:20

and he's like just don't do

46:22

it Don't say charts until after

46:24

the end of this week. You

46:26

know, don't say anything. Don't, yeah,

46:28

don't be committed to it. Yeah,

46:31

like don't publicly say flux 2.0

46:33

will include charts until you're sort

46:35

of done with this week that

46:37

it's going to take you to

46:39

get it done. You know, yeah.

46:41

Okay, so let me just, I

46:43

got to ask you one more

46:45

thing. Yeah. If because, because when

46:47

we end this call, I am

46:49

left with actual decisions to make.

46:51

If I build a minimal charting

46:53

library that does lines, maybe bars,

46:55

will it, even, is there a

46:57

world where I build it? It's

46:59

in there. It serves a good

47:01

amount of people. And then I

47:03

can upgrade it. without like kicking

47:05

myself in the face or looking

47:07

bad or it being a bad

47:09

experience like is there something here

47:11

like should I call it flux

47:13

simple chart or something right like

47:15

that seems like the obvious solution

47:17

like basic charts simple charts fast

47:19

charts svg charts svg charts like

47:21

if these you ship is or

47:23

this which is like the basic

47:25

line charts just to get people

47:27

rolling do the little simple charts

47:29

at the top of your table

47:31

whatever fine And then you can

47:33

decide for advanced charting, what does

47:36

that look like? Is that? Yeah.

47:38

Are you just going to forever

47:40

tell people? to pull in something

47:42

different, do you want to make

47:44

it more integrated? Maybe you can't,

47:46

maybe it, maybe there isn't a

47:48

good way to make it more

47:50

integrated and it is best to

47:52

just let people do it on

47:54

their own. I mean, Younger Kill

47:56

would have been like, I got

47:58

my next, my next big like

48:00

thing. I'm going to be a

48:02

charting guy because there's a giant

48:04

hole. There's like this giant gap

48:06

between like high charts and everything

48:08

else in the video jazz world.

48:10

There's nothing simple. I mean people

48:12

do pay for these charting libraries

48:14

like it's a thing I've paid

48:16

for it for years. I think

48:18

there needs to be a simple

48:20

free open source charting library that

48:22

is limited in scope and I

48:24

bet it would take off. It's

48:26

like lines, bars, basic stuff. No,

48:28

are you telling me for serious

48:30

there's not 50 of those out

48:32

there that has to be. Not

48:34

that I'm aware of. But maybe

48:36

it this supports your point of

48:38

like. anything like that inevitably won't

48:41

be popular because you're gonna go

48:43

I need it to support you

48:45

know infinite values or whatever it's

48:47

so rough when you build a

48:49

chart is always a disaster right

48:51

like it's yeah all this data

48:53

it's of heavy queries it's complicated

48:55

queries it's all this stuff right

48:57

just on the back end now

48:59

I gotta display it and people

49:01

want to be able to click

49:03

the chart and have it go

49:05

to a different page and show

49:07

you detail views all the stuff

49:09

it's like to not be sure

49:11

that when I need a different

49:13

chart that this library can do

49:15

both charts, it feels like a

49:17

big ask. Now again, I don't

49:19

know if people are doing very

49:21

simple things and they know they're

49:23

only going to align charts fine.

49:25

But I can't really imagine any

49:27

B to B app feeling that

49:29

way. And I don't know, just

49:31

there is always just more complication

49:33

with these things. The reason they're

49:35

big in huge libraries is because

49:37

it is a very complicated problem.

49:39

And I don't think that there

49:41

is a like easy simple solution

49:43

if you want to provide the

49:46

same feature set or a similar

49:48

feature set. Of course, you could

49:50

just not have all the features

49:52

and then it's just a line

49:54

on a page. Great. Like, I

49:56

mean, you could do that in

49:58

each. You don't even need that.

50:00

You don't need anything. Like you

50:02

could make a line with some

50:04

CSS or whatever. But you know, at some

50:06

point, like you wanted to do all these

50:08

other things, people would be like, oh, inside

50:10

the tool tip. I want to be able to

50:12

put a link in there. I want to be

50:14

able to show more data inside a tool tip,

50:16

not just. Don't just give me the

50:19

data that the point is, I want

50:21

to be able to do other data

50:23

inside that tool tip with details and

50:26

whatever, right? Like there's all these things

50:28

when you get into the chart what

50:30

people want to do, depending on. But

50:32

like I, there's no world where I'm able

50:35

to offer a nice API with chart

50:37

or whatever, where you can put your

50:39

nice details inside a tooltips and not.

50:41

Oh, come on, I believe in you,

50:43

Caleb, I believe in you. No way,

50:46

no way. There's no. I pretty much

50:48

need to offer some sort of, so

50:50

what, I mean, what filament does

50:52

is, you figure out all in PHP. Yeah.

50:54

And it's just, but it's a lot, like,

50:57

it's, it's a very, I mean, yeah,

50:59

I don't want to, I like that, I

51:01

like that a lot. I like that a lot.

51:03

I want that a lot. I

51:05

want that, I just want to

51:07

be, I just, this is the

51:09

problem with a live wire, right?

51:11

I just want to stay in

51:13

PDPP land. If there's a chart

51:15

object or whatever that I have

51:17

to populate with data and then

51:19

the data points can have objects

51:21

which have details and whatever, blah,

51:23

blah, blah, blah, that sounds amazing.

51:25

I love everything about that and

51:27

then you're spitting out a bunch

51:29

of JavaScript gobbledygook that's 500 lines

51:31

long that talks chart JS or

51:33

whatever library is. That to me sounds

51:35

optimal. For the advanced use

51:37

cases, definitely overkill. For

51:40

a simple use case. Yeah, I just have

51:42

this 50 points of data. It's

51:44

a date and a value and

51:46

that's it. Nobody wants anything else.

51:48

Nobody wants to click it. Nobody

51:50

wants to do anything. Yeah, fine. Like,

51:52

that's that's simple. All right,

51:54

I'm gonna finish burning my week. If and

51:56

then at the end of the week, I

51:58

will decide where you're at. if this is

52:00

a giant mistake and I'm gonna hop

52:02

on a like a screen share with

52:04

you at at some point and see if

52:07

I can show you something that you

52:09

are like let's do it flows me

52:11

away I'm not sure that you'll be like

52:13

let's do it unless I'm sure that

52:15

you'll be like let's do it unless I'm

52:17

sure the line you're coming up it's

52:19

gonna be awesome but it's just the problem

52:22

is when I need a scatter chart

52:24

and this chart see anything didn't I Oh

52:26

yeah, there's scatter chart, but it's, you

52:28

know. Oh, scatter chart. I'll make you

52:30

a scatter chart, are you kidding me? Yeah.

52:32

Don't do it. Not on a grid?

52:34

I know, I know, the scatter chart's one

52:36

of the easier ones. Let's go, let's

52:38

do a scatter chart. Not really different than

52:41

a line chart, really. It's sort of

52:43

the same thing, but without the lines. Let

52:45

me build you. Like a Cartesian if

52:47

it's a Cartesian grid thing I'm in no

52:49

radar charts. No None of that soon

52:51

as we get polar. I'm out Until

52:53

I crack open that black box realize it's

52:56

humanly possible to learn it and then

52:58

want to do it No heat charts you

53:00

give me the heat charts. No way

53:02

can't do it won't do it. Is that

53:04

thing called re chart? Do they have

53:06

any of this stuff? No, they do have

53:09

the treat which is like a heat

53:11

chart. Yeah, they do have it They

53:13

have the tree map. I don't know what's

53:15

involved. Style it that way though, but

53:17

high chart. You must be able to. H.R.B.

53:19

dude. Oh yeah, they do. They do

53:21

have it. I mean, I mean. The thing

53:23

with all these charges, I don't think

53:25

any of these things are too hard for

53:28

you, right? Like I think you could

53:30

make a pie chart. Like I feel

53:32

very confident. You can do it. No, I

53:34

believe it. But the problem is like

53:36

the 8,000 million edge cases of like and

53:38

all the little sub things when people

53:40

want to show a certain way. That's where

53:43

all the trouble is. Not in like

53:45

can you draw a circle and divide it.

53:47

Like I feel like. Yeah, you could

53:49

definitely draw a circle and divide it

53:51

up into the parts and put a number

53:53

in it. Like, not gonna be a

53:55

problem. But when you wanted to magically fly

53:58

together with a nice animation and you

54:00

wanna do, you know, all the stuff, you

54:02

want the chart segments to be clickable

54:04

and what happens when they're clicked and blah

54:06

blah blah blah blah. All that stuff.

54:08

Don't do it all. And I think

54:10

you can do it all. But I don't

54:12

know if it's the best use of

54:14

your time to do it. All right. This

54:17

is good. You've at least you've at

54:19

least like shaken me and I stated my

54:21

game up for what truly what you've

54:23

done is woken me up from my just

54:25

like, you know, Ivy drip of like

54:27

problem solving. We're selling software here Caleb.

54:29

We're selling software. That's what we're trying to

54:32

do. Sell software. Honestly, it is literally

54:34

if you were like talking to somebody about

54:36

the mechanics of like a business thing

54:38

like this and they didn't. Most people wouldn't

54:40

understand that like you're selling software. But

54:42

you could just be selling someone else's software

54:45

that they gave to you for free

54:47

and are letting you sell. They're letting

54:49

you sell it. You're literally like you can

54:51

just have millions of hours of work.

54:53

You can literally have hundreds of thousands of

54:55

hours right here. Like and you can

54:57

just capitalize on it. It's so much. That's

54:59

sort of interesting thing too about the

55:02

idea of like the P. P. abstraction layer.

55:04

It's like you can then even most

55:06

likely fix some of the rough edges. the

55:08

final config right like now you're massaging

55:10

things to do what you want to

55:12

do potentially and things like that as well

55:14

so that's kind of interesting but yeah

55:16

yes you can get this hundreds of thousand

55:19

hours of labor and eight thousand bugs

55:21

they've already fixed and all that stuff it's

55:23

totally free you can ship it but

55:25

just you're what your value is you're giving

55:27

me a nice API I don't have

55:29

to think about all that stuff too

55:31

much unless I really need to and then

55:34

I can dig in there and that's

55:36

fine but I'm getting the kaleidified API Let

55:38

me make this simple line chart thing.

55:40

Everybody's gonna love it. nobody's going

55:42

to want anything

55:44

else. to be else. to want

55:47

anything else. to want

55:49

they're going to carry

55:51

you around at going to

55:53

carry you around at their

55:55

party libraries and see

55:57

if any of them

55:59

aren't the worst thing

56:01

in the world.

56:03

But they're probably all

56:06

our thing in the world, but

56:08

don't want to use.

56:10

all our except charters, which I don't

56:12

thanks. want you, brother. Okay,

56:14

Ian. Thanks. right, to you.

56:16

Appreciate you. Say it.

Rate

Join Podchaser to...

  • Rate podcasts and episodes
  • Follow podcasts and creators
  • Create podcast and episode lists
  • & much more

Episode Tags

Do you host or manage this podcast?
Claim and edit this page to your liking.
,

Unlock more with Podchaser Pro

  • Audience Insights
  • Contact Information
  • Demographics
  • Charts
  • Sponsor History
  • and More!
Pro Features