3View and interact with your Val Town SQLite data. It's based off Steve's excellent [SQLite Admin](https://www.val.town/v/stevekrouse/sqlite_admin?v=46) val, adding the ability to run SQLite queries directly in the interface. This new version has a revised UI and that's heavily inspired by [LibSQL Studio](https://github.com/invisal/libsql-studio) by [invisal](https://github.com/invisal). This is now more an SPA, with tables, queries and results showing up on the same page.
4
5
6
7## Install
35 return userInfo?.bio;
36 },
37 async getProfileImageUrl() {
38 const userInfo = await this.getUserInfo();
39 return userInfo?.profileImageUrl;
40 },
41 async getEmail() {
1# Gemini AI Object Detection and Bounding Box Visualizer
2
3This application visualizes object detection results by drawing bounding boxes on images using the [Google's Gemini 1.5 Pro AI model](https://ai.google.dev/).
4
5Try using this image of 8 bananas, with 1 row and 1/2/4 columns: [https://f2.phage.directory/blogalog/bananas-8.png](https://f2.phage.directory/blogalog/bananas-8.png)
6
7Or this image of a phage plaque assay, with 3x3 grid and high contrast turned on: [https://f2.phage.directory/blogalog/pae7.png](https://f2.phage.directory/blogalog/pae7.png)
8
9This app is an adaptation of Simon Willison's idea, which you can read more about here: [https://simonwillison.net/2024/Aug/26/gemini-bounding-box-visualization/](https://simonwillison.net/2024/Aug/26/gemini-bounding-box-visualization/)
8 const email = await valTownUser.getEmail();
9 const tier = await valTownUser.getTier();
10 const profileImageUrl = await valTownUser.getProfileImageUrl();
11
12 console.log('User Information:');
16 console.log(`Email: ${email}`);
17 console.log(`Tier: ${tier}`);
18 console.log(`Profile Image: ${profileImageUrl || 'Not set'}`);
19
20 console.log('\nEndpoint URLs:');
64```
65
66### getProfileImageUrl()
67Retrieves the URL of the user's profile image.
68- Use case: Showing the user's avatar in a val.
69```ts
70import { valTownUser } from "https://esm.town/v/iamseeley/valTownUser";
71
72export const getProfileImageUrl = () => valTownUser.getProfileImageUrl();
73
74// Example usage:
75const profileImageUrl = await getProfileImageUrl();
76console.log(`Profile image URL: ${profileImageUrl || 'Not set'}`);
77```
78
10* Create a [Val Town API token](https://www.val.town/settings/api), open the browser preview of this val, and use the API token as the password to log in.
11
12<img width=500 src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/7077d1b5-1fa7-4a9b-4b93-f8d01d3e4f00/public"/>
1# ☔️ Umbrella reminder if there's rain today
2
3
4
5## Setup
10
11<div align="center">
12<img src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/67a1d35e-c37c-41a4-0e5a-03a9ba585d00/public" width="500px"/>
13</div>
4
5<div align="center">
6<img src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/67a1d35e-c37c-41a4-0e5a-03a9ba585d00/public" width="700px"/>
7</div>
3This is a lightweight Blob Admin interface to view and debug your Blob data.
4
5
6
7Use this button to install the val: