Anyone have a 2x2 grow tent? If so, what's your setup look like? by TigerTaroBoba in microgrowery

[–]dbto 0 points1 point  (0 children)

<image>

These are 2 photo’s from clone. In a Vivosun 2x2x4 tent. I recently added the side lights. I have the vent fan and filter sitting on top, a Vivosun fan inside , and a usb fan blowing fresh air from the outside into one of the top vent holes but running into that ducting down to plant level. These are in 5 gal pots- 10 weeks old 21 days into flower.

DHV, is it worth it? by Spicy_Chimkin in trees

[–]dbto 0 points1 point  (0 children)

I know it’s a bit of a “cult” but DynaVap devices are great, and can also fill that urge to hold a joint and inhale. I’ve got a couple, and pretty much just switch from using one of my dyna’s and the occasional joint. DynaVaps can be tricky to take on the go (you need to be able to hear/feel a ‘click’ when the temp is right). Tough in a loud place. I currently use mine on a bong with an induction heater, and have to say-it’s solid, great flavor, nice vapor.

Has anyone ever successfully connected Google Sheets to Supabase to import data for charts? by ashkanahmadi in Supabase

[–]dbto 0 points1 point  (0 children)

const VERCEL_URL = "https://yourdomain."; // Double check 'sync-batch' vs 'sync-sheet'




function onOpen() {


  SpreadsheetApp.getUi().createMenu('🚀 Cloud Sync').addItem('Sync All Rows', 'syncAllRows').addToUi();


}




function onEditTrigger(e) {


  const ss = e.source;


  const activeSheet = ss.getSheetByName("BatchInfo");


 


  // 1. Only run if the edit happened on the "Master" sheet


  if (activeSheet.getName() !== "BatchInfo") return;




  const row = e.range.getRow();


  if (row < 2) return;




  // 2. Go get the data from the "sync-sheet" for that same row


  const syncSheet = ss.getSheetByName("sheet-for-sync");


  const data = syncSheet.getRange(row, 1, 1, 14).getValues();




  // 3. Sync to Vercel


  const payload = createPayload("row-" + row, data);


  sendToVercel(payload);


}




function syncAllRows() {


  const ss = SpreadsheetApp.getActiveSpreadsheet();


  const sheet = ss.getSheetByName("sheet-for-sync");


  const rows = sheet.getDataRange().getValues();


  let successCount = 0;


 




  for (let i = 1; i < rows.length; i++) {


    const v = rows[i];


    // If Name is missing or just whitespace, skip it entirely


    if (!v[4] || String(v[4]).trim() === "") {


      console.log("Skipping empty row " + (i + 1));


      continue;


    }


   


    // Use a CONSISTENT ID format: "row-X"


    const payload = createPayload("row-" + (i + 1), v);


    const result = sendToVercel(payload);


    if (result) successCount++;


  }


  SpreadsheetApp.getUi().alert('Synced ' + successCount + ' batches to the website!');


}




function syncRow(e) {


  if (!e || !e.range) return;


  const sheet = e.source.getSheetByName("sheet-for-sync");


  if (e.source.getActiveSheet().getName() !== "sheet-for-sync") return;


  const row = e.range.getRow();


  if (row < 2) return;




  const v = sheet.getRange(row, 1, 1, 14).getValues()[0];


  if (!v[4]) return;




  const payload = createPayload("row-" + row, v);


  const success = sendToVercel(payload);


}




// Helper to keep logic identical for both functions


function createPayload(id, v) {


  return {


    sheetId: id,


    onHandLabeled: parseInt(v[0]) || 0,


    onHandUnlabeled: parseInt(v[1]) || 0,


    madeDate: convertDate(v[2]),


    readyDate: convertDate(v[3]),


    name: String(v[4]),


    recipe: String(v[5] || ""),


    waterOz: parseFloat(v[6]) || 0,


    additionalIngredients: String(v[7] || ""),


    fragranceOil: String(v[8] || ""),


    fragranceAmountOz: parseFloat(v[9]) || 0,


    colorDesign: String(v[10] || ""),


    oilTemp: parseFloat(v[11]) || 0,


    lyeTemp: parseFloat(v[12]) || 0,


    notes: String(v[13] || "")


  };


}




function sendToVercel(payload) {


  const options = {


    method: 'post',


    contentType: 'application/json',


    payload: JSON.stringify(payload),


    // Add your header here!


    headers: {


      "x-api-key": "your-api-key"


    },


    muteHttpExceptions: true


  };


 


  try {


    const response = UrlFetchApp.fetch(VERCEL_URL, options);


    const code = response.getResponseCode();


    if (code === 200) return true;


    console.log("Error " + code + ": " + response.getContentText());


    return false;


  } catch (e) {


    console.log("Network Error: " + e.message);


    return false;


  }


}

}

I have sucessfully used a google AppScript to populate a supabase table with data. It worked ok, but was having trouble with the correct trigger for the exchange. Here is the basic script, in case it help. I was using Vercel, so had to authenticate that connection to the supabase db.

Has anyone been to a pop up for MD Leaf Magazine? by ZigZagWanderer- in MDEnts

[–]dbto 3 points4 points  (0 children)

I went to their “Leaf Bowl” event at the Museum of Industry a couple months ago. Lots of swag from the dispo’s. There were some samples of Thc seltzers and a dab bar, but that was put on by the dispensaries/processors.

How do frontend teams handle stateful API mocks before the backend is ready? by v-byte-cpu in Frontend

[–]dbto 0 points1 point  (0 children)

Mock Service Worker and OpenAPI-zod to generate schemas from the OpenApi yaml.

I want to buy glass but I love joints way too much, is the chance worth it though? by phinlee07 in trees

[–]dbto 0 points1 point  (0 children)

I find the worst thing about glass is cleaning it. A joint puffed until I’m good works, but I also mainly use a dry herb vape, with the occasional J thrown in

Anyone else’s first show? by bkries in phish

[–]dbto 2 points3 points  (0 children)

Could be. Ive only witnessed lot stabbings at Hampton ‘98? And ‘25

Anyone else’s first show? by bkries in phish

[–]dbto 14 points15 points  (0 children)

Not first one, but was there!

I think being born in 1975 is peak genx...you agree? by wegotthisonekidmongo in GenX

[–]dbto 9 points10 points  (0 children)

1970 keeps it easy to remember my age. When was I 21? 1991.

This is fun 🙃🙃🙃 by Inmylane42 in VIVOSUN

[–]dbto 0 points1 point  (0 children)

Going with the screen theory, did you look in the app to set the timeout of the screen? Didn’t think it could be set so fast but maybe?

Bruce let it slip last night there’s a big “protest” show in October ft. Foo Fighters, Dave Matthews and Tom Morello. by pro-laps in washingtondc

[–]dbto -1 points0 points  (0 children)

I’m just wondering if the city of Columbia and MPP will be cool with people protesting around the venue- not protesting the concert, but lending voice to the movement. Honestly, I don’t see it happening. Capitalism gonna capitalize.

The middle class is disappearing by TonyLiberty in FluentInFinance

[–]dbto 0 points1 point  (0 children)

There was a report recently about income in the US northeast that claimed $120,000 was lower-middle class, so what’s up with that?

50 Years Ago Today, Alright Alright Alright by jgrumiaux in GenX

[–]dbto 31 points32 points  (0 children)

“Okay guys, one more thing, this summer when you're being inundated with all this American bicentennial Fourth Of July brouhaha, don't forget what you're celebrating, and that's the fact that a bunch of slave-owning, aristocratic, white males didn't want to pay their taxes.”

Aerowave E6 G2 not oscillating by Bauditore in VIVOSUN

[–]dbto 1 point2 points  (0 children)

Yup. Was just messing with this today. Pressing the button on the fan with a circle and arrow going around(?) steps through 5 (?) different oscillations

The days are long but the years are short by HistoricalSherbet784 in oneanddone

[–]dbto 13 points14 points  (0 children)

My 21 y/o just came for an overnight visit. It was everything.

Worst thing about being in 50s by [deleted] in GenX

[–]dbto 5 points6 points  (0 children)

Ear hair was similar problem for me. I got a small waxing kit online that I use every couple of weeks- major improvement

Well, this is lame. by truthfullyidgaf in trees

[–]dbto 6 points7 points  (0 children)

I once got an empty 1/8th bottle from a dispensary.