WEBVTT

00:00.000 --> 00:10.800
Hello everybody, welcome here at the Lightning Talks at Foster, here in Brussels.

00:10.800 --> 00:14.800
I want to introduce you to you, Jason and Zack.

00:14.800 --> 00:21.200
They talk about Image, Self-Holested Photo and Video Management solution.

00:21.200 --> 00:25.000
Get them a warm welcome and enjoy the song.

00:25.000 --> 00:39.600
All right, thank you, I'm Jason and this is Zack, we're members of the Image Team.

00:39.600 --> 00:49.600
Image joined the Futo Company Organization last May and the two of us are able to work on a full time, which is pretty cool, pretty fun.

00:49.600 --> 00:54.600
Before we get started, how many of you guys have heard of Image before?

00:55.600 --> 01:05.600
Okay, for those of you that haven't heard of Image, image is a high performance video and photo management solution.

01:05.600 --> 01:10.600
I think actually on Monday, it will be three years since the first commit.

01:10.600 --> 01:14.600
So it's a pretty new project, it's not been around for very long.

01:14.600 --> 01:23.600
It has a web app and a mobile app and the primary use case for it is to run this at your house and you can take pictures on your phone and back them up.

01:24.600 --> 01:32.600
To your server on your house, so basically a self-hosted Google Photos implementation.

01:32.600 --> 01:38.600
A little bit about the text stack, it's basically TypeScript everywhere.

01:38.600 --> 01:52.600
We have an Express node server for API and the front 10 is written in Svel, which is also a TypeScript framework.

01:52.600 --> 02:02.600
The back end we use is Postgres and I guess notably we use a couple of extensions to do specifically like vector searches.

02:02.600 --> 02:15.600
So we have a bunch of cool machine learning features built into Image and Postgres plus vector extensions and a few other things let us do basically everything we want to do with just a single database.

02:15.600 --> 02:20.600
The mobile side, the app is written in Flutter and it compiles to Android and iOS.

02:20.600 --> 02:29.600
So that's something a little bit unique about us, a lot of self-hosted open source apps don't have a mobile app or don't have a great mobile app.

02:29.600 --> 02:37.600
But that's one of the things that was important to our primary use case, which is taking pictures on your phone and back in them up to your server.

02:37.600 --> 02:41.600
It's also worth noting that we have a bunch of machine learning features.

02:42.600 --> 02:47.600
I'm not a machine learning guide, but we'll understand Python is the way to do that.

02:47.600 --> 03:02.600
So we have a specific container, you deploy, that's written in Python and it can run and load models for facial recognition and generate embeddings for search and other stuff like that.

03:03.600 --> 03:14.600
All right, we're going to do live demo. I'll show you some of the pictures. I'm from the United States. I flew into Germany and spent a few days there before coming up to Brussels.

03:14.600 --> 03:22.600
So we're going to look at some of my pictures. I have set up on a demo in synth and look at some of the features capabilities that image has.

03:23.600 --> 03:34.600
So you notice the first thing, there's this scrubble timeline, so you can just click and jump to any point in time. It makes it really nice to be able to just go back and find pictures.

03:34.600 --> 03:48.600
So in January, it's like last month, it's like two days ago, whatever, but in January, you know, I flew into Frankfurt and I spent a couple of days with Daniel and I'm going to make an album and share it with the rest of the team.

03:48.600 --> 04:06.600
So you can see, you know, we're not having any cool castles in the United States, but Europe, the school castes everywhere. I went and saw a cool castle in Germany to go probably too many pictures, but the server is on my house, you know, so I plenty of stores and no problem.

04:06.600 --> 04:16.600
We went to a couple museums and saw a bunch of cool buildings and stuff. Anyways, let's put all these in a album.

04:16.600 --> 04:28.600
So I can just shift select and out those in album. I'll make, oh, already have a false in album.

04:28.600 --> 04:32.600
I'll make a new album.

04:32.600 --> 04:38.600
Yeah, and here you can, you can change the title, added description, but the most important thing about albums is you can share them with other people.

04:38.600 --> 04:48.600
So I'll share them with Zack and Alex, Alex is the main founder of the team and he actually started working on this because he asks his wife like,

04:48.600 --> 04:54.600
What should I build for you? And she was like, we're about to have a baby. I'm going to take a lot of pictures. Can you build an app for me?

04:54.600 --> 05:02.600
And so he's our working on image. And over time, he got a bunch of other people that also needed a place to put their pictures.

05:02.600 --> 05:10.600
He actually just had a baby this last week, so he's not here and he sent us in his stead, but, you know, I'll share these pictures with Alex.

05:10.600 --> 05:16.600
So on this instance, Alex can log in Zack and log in and they can see this album that I've shared with them.

05:16.600 --> 05:24.600
But I also have other people want to share it with that aren't on this instance, so I can generate what's called a shared link.

05:24.600 --> 05:28.600
So you can access this without having to log in.

05:28.600 --> 05:36.600
You can optionally pass or protect it and you can choose whether to show metadata, which is like the GPS location, the picture we're taking in and stuff like that.

05:36.600 --> 05:46.600
So if I create this link, you know, I can open the incognito tab and you could access this and see all the pictures on it.

05:46.600 --> 05:52.600
It was pretty cool to be able to share it with friends and stuff.

05:52.600 --> 06:02.600
Something else is pretty cool about image is we have a map view, so you can see on this map all the different places I've been and where pictures have been taken.

06:02.600 --> 06:14.600
You can, yeah, sometimes it's really nice to be able to just know I took a picture in this area, but I don't remember when it was or what it was about necessarily.

06:14.600 --> 06:21.600
So you can use the map to kind of go back and explore where I visited in Europe and you know, stuff like that.

06:22.600 --> 06:24.600
Something else.

06:24.600 --> 06:35.600
When you upload a picture, we run like a bunch of tasks and they will go and do a bunch of things and enhances the things you can do with your photos and one of the things you do is facial recognition.

06:35.600 --> 06:44.600
So we had some of the team members upload their pictures for us and so you can see some of them here, but like these are all the pictures with me in them.

06:44.600 --> 06:53.600
We went to a illusion this place and I'm taller than Ben, but on this picture.

06:53.600 --> 07:00.600
Also on the detailed page, you can add a description, you can favorite and mark them with like a 5 star rating.

07:00.600 --> 07:08.600
We also support like hierarchical tags, so you can have like nested tags, you can link to these pictures and then you can use that to view them.

07:14.600 --> 07:17.600
Yeah, and then to do that.

07:17.600 --> 07:25.600
Yeah. So I mean, this is kind of our web application and but we also want to show off a little bit the mobile app.

07:25.600 --> 07:30.600
So I'll turn the time over to Zach, we'll do a little bit of the demo for the mobile site.

07:30.600 --> 07:40.600
Yeah, so mobile app looks pretty similar on the timeline view, we have the same like scrubber on the side, you can jump to anywhere you like.

07:40.600 --> 07:45.600
You can also if you have photos locally, they'll show up here if you're backing them up.

07:45.600 --> 07:50.600
And one of the things we have is the automatic background.

07:50.600 --> 08:03.600
Back up. So I'm going to take a photo of the crowd now and then we'll take a photo of this laptop and this bottle here.

08:03.600 --> 08:07.600
And then we'll go back to the app.

08:07.600 --> 08:14.600
And they've uploaded, they don't have thumbnails yet, give us a second.

08:14.600 --> 08:18.600
But yeah, they've already uploaded to the server, probably the bottle one.

08:18.600 --> 08:23.600
And we should already be able to go into the search for example.

08:23.600 --> 08:29.600
And we have a smart machine learning search based off of clip.

08:29.600 --> 08:42.600
And we should be able to search for like lecture, whole in here and hopefully.

08:42.600 --> 08:49.600
I think it's that one there, the thumbnails having a bit of a problem, but.

08:49.600 --> 08:51.600
There you go.

08:51.600 --> 08:57.600
Similarly, maybe more relevant to people, we could search for like cat.

08:57.600 --> 09:03.600
And we have all the cat pictures of my cats and what are some of our contributors.

09:03.600 --> 09:07.600
So yeah, the search is really cool.

09:07.600 --> 09:10.600
I think a lot of people like how great the search works.

09:10.600 --> 09:16.600
And you can get really specific with the terms and pretty much always find the photo you'd like.

09:16.600 --> 09:18.600
Yeah, and it has all the other features.

09:18.600 --> 09:24.600
So again, we have the map view where you can go in and see a heat map of all the photos.

09:24.600 --> 09:28.600
And like scroll and you'll see all the photos on your screen.

09:28.600 --> 09:30.600
Yeah, that's the app.

09:30.600 --> 09:33.600
Should we go on to the next.

09:33.600 --> 09:37.600
Cool.

09:37.600 --> 09:41.600
So now I'm going to talk about a few of the things are upcoming for image.

09:41.600 --> 09:45.600
So the main one that everyone kind of wants to see happens.

09:45.600 --> 09:47.600
The state will release including us.

09:47.600 --> 09:49.600
We.

09:49.600 --> 09:51.600
This kind of will bring.

09:51.600 --> 09:55.600
For you guys, we want to have proper semantic versioning.

09:55.600 --> 09:57.600
Back to compatibility for apps.

09:57.600 --> 10:00.600
Right now, we kind of only keep a couple versions working.

10:00.600 --> 10:01.600
Like guaranteed working.

10:01.600 --> 10:05.600
But when we go with this, it will be like all major versions will work.

10:05.600 --> 10:06.600
That kind of thing.

10:06.600 --> 10:09.600
The kind of stuff you expect from a stable piece of software.

10:10.600 --> 10:15.600
Yeah, we we are aiming towards this is like our main goal at the moment.

10:15.600 --> 10:20.600
Lock photos is another one that is probably one of our highest requested features.

10:20.600 --> 10:26.600
Which I think the other apps like the app that shall not be named has.

10:26.600 --> 10:32.600
Where you can put your photos in a like a parcel protected or pin protected folder.

10:32.600 --> 10:35.600
That doesn't show up in the main timeline.

10:35.600 --> 10:36.600
That kind of thing.

10:36.600 --> 10:38.600
We're working on that as well.

10:38.600 --> 10:40.600
Smart albums.

10:40.600 --> 10:42.600
There's one we've wanted for a long time.

10:42.600 --> 10:46.600
So we've done some work to.

10:46.600 --> 10:48.600
Go towards this.

10:48.600 --> 10:54.600
Basically the idea is you'll be able to have any of like the metadata or.

10:54.600 --> 10:58.600
People, data locations as it says.

10:59.600 --> 11:02.600
As well as we even want to have like search terms.

11:02.600 --> 11:03.600
So search you saw before.

11:03.600 --> 11:06.600
You'll be able to use that and have like.

11:06.600 --> 11:07.600
A.

11:07.600 --> 11:13.600
Accountable that's called when you have like the number if it's like confident over certain level.

11:13.600 --> 11:15.600
It will go into an album.

11:15.600 --> 11:19.600
And it will automatically update this album whenever new photos are uploaded.

11:19.600 --> 11:24.600
And this is kind of powered by another feature which will be called workflows.

11:24.600 --> 11:27.600
Which allow you to do that kind of automation like automated albums.

11:27.600 --> 11:30.600
But across any action on the server.

11:30.600 --> 11:35.600
So you can do automated tagging.

11:35.600 --> 11:36.600
What are the directions?

11:36.600 --> 11:37.600
It will be a tagging.

11:37.600 --> 11:38.600
The albums.

11:38.600 --> 11:41.600
You can automatically add users to albums.

11:41.600 --> 11:44.600
If they're a person in it that you want to automatically share it with.

11:44.600 --> 11:46.600
You can like create shared links.

11:46.600 --> 11:47.600
You get up like external integrations.

11:47.600 --> 11:49.600
You get like auto share things to Facebook.

11:49.600 --> 11:51.600
That means some criteria.

11:51.600 --> 11:54.600
So basically like anything you would want to do.

11:54.600 --> 12:00.600
The thing that's kind of cool about image is there's a huge community of people building other stuff around it.

12:00.600 --> 12:05.600
There's like other apps people are using APIs to like do crazy stuff with.

12:05.600 --> 12:09.600
And like some of those things would be easier if you could do it in image itself.

12:09.600 --> 12:17.600
If you want to run your own machine learning model that does some other type of analysis on the pictures that are uploaded or stuff like that.

12:17.600 --> 12:21.600
Or maybe you want to pay for a AI integration something.

12:21.600 --> 12:25.600
And you could like send these pictures there to have them do some additional stuff.

12:25.600 --> 12:29.600
Yeah, I think basically we have like a lot of feature requests.

12:29.600 --> 12:33.600
And a lot of those things are very things that probably only a few people want.

12:33.600 --> 12:36.600
But we want to enable those but we don't want to build those ourselves.

12:36.600 --> 12:41.600
So this will enable the community to make plugins to do that kind of thing as well.

12:41.600 --> 12:45.600
And then another big one that you can do on.

12:45.600 --> 12:51.600
Not be named but we can't do here is because all of our instances are separate on other people's machines.

12:51.600 --> 12:55.600
You cannot share an album between two instances right now.

12:55.600 --> 13:04.600
But we want to add federations so you could have an album and share an ad photos from two different servers or even like three, four, five different servers.

13:04.600 --> 13:10.600
And all of the different servers will be able to see the albums from.

13:10.600 --> 13:15.600
And add out ad pictures from every every user on those servers.

13:15.600 --> 13:23.600
So this will enable like a more seamless experience kind of like what you'd get with the bigger cloud providers.

13:23.600 --> 13:28.600
But still self-hosted and all of that great stuff.

13:28.600 --> 13:36.600
And then we want to enable easier backups for users.

13:37.600 --> 13:39.600
The art is confident with self-hosting.

13:39.600 --> 13:44.600
They still want to run a server home and they've got the expertise to do that kind of thing.

13:44.600 --> 13:53.600
But I'm confident with like setting it back up and restoring is kind of a quite a complicated thing to do correctly.

13:53.600 --> 13:57.600
So we want to enable something in image itself where it's just kind of a one click.

13:57.600 --> 13:59.600
You pay us a fee.

13:59.600 --> 14:01.600
We end 20 crypto the backups.

14:01.600 --> 14:05.600
This goes on to our cloud servers and then if you need to restore it, it's there.

14:05.600 --> 14:07.600
It's all protected.

14:07.600 --> 14:08.600
And following from that.

14:08.600 --> 14:15.600
Well, I think I'll just say too like a lot of people run apps at home and if you have backups or not for some of this stuff,

14:15.600 --> 14:18.600
I think it doesn't matter too much, but pictures is a little bit different.

14:18.600 --> 14:20.600
Like you don't want to lose your photos.

14:20.600 --> 14:27.600
And it's like backups are hard and backups are photos and specifically is like something you don't want to get wrong.

14:27.600 --> 14:33.600
So there's plenty of people I think out there that they would just like to have an option to pay us to deal with that for them.

14:33.600 --> 14:37.600
And so we want to enable those types of use cases as well.

14:37.600 --> 14:41.600
Yeah, we're trying to protect you from your angry relatives.

14:41.600 --> 14:44.600
If you have a loser photos.

14:44.600 --> 14:48.600
And then moving on from that, just a brief mention.

14:48.600 --> 14:52.600
Following, we want to build a full cloud solution at some point.

14:52.600 --> 14:56.600
So people who are completely nontent and cool can still have all the benefits of image.

14:56.600 --> 14:59.600
But without having to actually run out home.

14:59.600 --> 15:02.600
So yeah.

15:02.600 --> 15:06.600
And the last mention is we just launched merch.

15:06.600 --> 15:11.600
You can go to image.store and you can grab yourself some of these designs on t-shirts,

15:11.600 --> 15:14.600
hoodies, stickers, magnets, all kinds of stuff.

15:14.600 --> 15:17.600
We'll have some at the booth tomorrow.

15:17.600 --> 15:23.600
I think we said if you have an image in store when you can show it to us, then you get free t-shirt.

15:23.600 --> 15:28.600
So you can find us on our socials here.

15:28.600 --> 15:30.600
We have nine seconds.

15:30.600 --> 15:31.600
Thanks for coming.

15:31.600 --> 15:33.600
And yeah, catch us our stand.

15:33.600 --> 15:35.600
I'm going to tell you a little too.

15:35.600 --> 15:38.600
Okay.

15:38.600 --> 15:40.600
Thank you for your time.

