Marinette & Menominee Amateur Radio Club

Regular Monthly Meeting Minutes

Thursday January 9, 2025

 

Meeting was called to order at 7:00 pm at inVenture North in Marinette by club President Dan Nyman, W9DLN.

Motion to approve the December meeting minutes was made by Paul Sorensen, NS8V and seconded by Mike Lemke, KD8FUE. The motion was accepted and carried.

Treasures Report: NS8V reported the income and expenditures for the past month. The ending balance for the month of December was $6,931.04. Motion to accept the treasures report was made by Doug Dooley, KD8OVR and seconded by KD8FUE. The motion was accepted and carried.

Correspondence: None

Committee Reports

ARES Report: Robert Juhlin, W8AWF reported the UP 200 sled dog race is planned for February 14th through 16th, contact W8AWF if you are interested in helping with radio communications for the event. There was a discussion on MI CIMS. Tom Philipps discussed the status of the County EOC.

Fundraiser: No report.

Yacht Report: Ed Engleman, KG8CX reported they gained their first new member for the year. Visit their new website at https://yachtyouth.net/

ARRL/Webmaster Report: No report.

Old Business

Technician Class: KD8OVR reported technician license classes will be held four Wednesdays from 6-9 pm starting February 5th, followed by a test session.

Repeater: N9GLT is still planning to get up to the 444.075 repeater to check out the analog/digital mode issue.

Bicycle Tour: No update

Escanaba Link: No updates.

Charter Night/After Christmas Dinner: The dinner will be held at Embers 1871 in Peshtigo on January 25th. Social at 5 pm dinner at 6 pm.

Officer Nominations/Elections:

 The following were nominated for officer positions:

President: W9DLN declined to accept a nomination. Jim Callow, K8IR was nominated an accepted.

Vice President:  Robert Juhlin, W8AWF was nominated and accepted.

Secretary: John Goldschmidt, N9GLT was nominated and accepted.

Treasurer: Paul Sorensen, NS8V was nominated and accepted.

Motion to elect the nominated officers by acclamation was made by KD8FUE and seconded by Tom Doering, KF5WFP.  The motion was accepted and carried.

 

New Business

Paust Caldron Falls Repeater: Dale Paust, KD9MVZ has a 2 meter repeater on the air.  The repeater is on 147.195+ (146.2) in narrow FM mode.

Financial Review:  KD8OVR, N9GLT, and KD9IGW will conduct the annual financial review.

Constitution/By-laws:  W9DLN suggested the constitution and by-laws be reviewed and updated.

Announcements: It’s time to renew your club membership.  Renewals can be made online, by mail, or in person at a meeting.

Motion to adjourn the meeting was made by W9DLN and seconded by NS8V. The motion was accepted and carried. Meeting ended at 7:45 pm.

14 members present: N9GLT, W9DLN, KG8CX, K8IR, KD8OVR, KD8FUE, KF5WFP, KD9IGW, NS8V, W8AWF, NO9X, WN6KHG, AG9P and AA9VV.  Tom Philipps, Menominee County EM was also present.

 

Minutes respectfully submitted by John Goldschmidt – Secretary

NWS Weather Radar

Local Weather

Error: Your setting of location "45° 05' 59.93" N, -87° 37' 50.38" W" is invalid

NEW Weather

<!doctype html>
<html lang="en">
<head>
<title>NEW Weather</title></head>
<body>
<header class="topbar">
  <div>Dashboard</div>
  //<input id="globalSearch" placeholder="Search or type URL..." />
</header>

<div class="container">
  <main class="main">

    <div class="weather">
      <div id="alerts"></div>
      <h3 id="locationLabel">Weather</h3>
      <div id="today"></div>
      <div class="forecast" id="forecast"></div>
      <div class="hourly" id="hourly"></div>

      <div class="radar">
        <iframe width="100%" height="250" src="https://embed.windy.com/embed2.html?lat=45.10&lon=-87.63&detailLat=45.10&detailLon=-87.63&width=650&height=250&zoom=7&level=surface&overlay=radar"></iframe>
      </div>
    </div>

  </main>
</div>

<script>
const data={"Favorites":[{title:"Google",url:"https://google.com"}]};
const sidebar=document.getElementById('sidebar');
function render(){sidebar.innerHTML='';Object.entries(data).forEach(([cat,links])=>{const d=document.createElement('div');d.className='cat';d.innerHTML=`<div class='cat-title'>${cat}</div>`;const list=document.createElement('div');list.className='links-list';links.forEach(l=>{const item=document.createElement('div');item.className='link-item';const domain=new URL(l.url).hostname;item.innerHTML=`<img src='https://www.google.com/s2/favicons?domain=${domain}'><div>${l.title}</div>`;item.onclick=()=>window.open(l.url);list.appendChild(item)});d.appendChild(list);sidebar.appendChild(d)});}render();

// search
const search=document.getElementById('globalSearch');
search.addEventListener('keydown',e=>{if(e.key==='Enter'){const v=search.value;if(v.startsWith('http'))location.href=v;else if(v.includes('.'))location.href='https://'+v;else location.href='https://google.com/search?q='+v;}});

// WEATHER
let LAT=45.1019,LON=-87.6303;

navigator.geolocation?.getCurrentPosition(pos=>{
  LAT=pos.coords.latitude;
  LON=pos.coords.longitude;
  document.getElementById('locationLabel').textContent='Your Location Weather';
});

const todayEl=document.getElementById('today');
const forecastEl=document.getElementById('forecast');
const hourlyEl=document.getElementById('hourly');
const alertsEl=document.getElementById('alerts');

const cToF=c=>(c*9/5)+32;

const codeMap={0:'Clear',1:'Mostly clear',2:'Partly cloudy',3:'Cloudy',61:'Rain',63:'Rain',65:'Heavy rain',71:'Snow',95:'Storm'};

async function fetchWeather(){
 try{
  const res=await fetch(`https://api.open-meteo.com/v1/forecast?latitude=${LAT}&longitude=${LON}&daily=temperature_2m_max,temperature_2m_min,weathercode&hourly=temperature_2m&timezone=auto&forecast_days=5`);
  const d=await res.json();

  todayEl.innerHTML=`<div style='font-size:24px;font-weight:700;'>${Math.round(cToF((d.daily.temperature_2m_max[0]+d.daily.temperature_2m_min[0])/2))}°F</div><div>${codeMap[d.daily.weathercode[0]]||''}</div>`;

  forecastEl.innerHTML='';

  d.daily.time.forEach((t,i)=>{
    const date=new Date(t);
    const day=date.toLocaleDateString(undefined,{weekday:'short'});
    const el=document.createElement('div');
    el.className='day';

    el.innerHTML=`<div>${day}</div><div>${Math.round(cToF(d.daily.temperature_2m_max[i]))}° / ${Math.round(cToF(d.daily.temperature_2m_min[i]))}°</div><div>${codeMap[d.daily.weathercode[i]]||''}</div>`;

    el.onclick=()=>showHourly(i,d);

    forecastEl.appendChild(el);
  });

  showHourly(0,d);

  fetchAlerts();

 }catch(e){todayEl.textContent='Weather unavailable';}
}

function showHourly(dayIndex,data){
  hourlyEl.innerHTML='';
  const hours=data.hourly.time;
  const temps=data.hourly.temperature_2m;

  for(let i=dayIndex*24;i<dayIndex*24+24;i++){
    const h=new Date(hours[i]).getHours();
    const el=document.createElement('div');
    el.className='hour';
    el.innerHTML=`<div>${h}:00</div><div>${Math.round(cToF(temps[i]))}°</div>`;
    hourlyEl.appendChild(el);
  }
}

async function fetchAlerts(){
  try{
    const res=await fetch('https://api.weather.gov/alerts/active?area=WI');
    const data=await res.json();
    alertsEl.innerHTML='';
    data.features.slice(0,2).forEach(a=>{
      const div=document.createElement('div');
      div.className='alert';
      div.textContent=a.properties.headline;
      alertsEl.appendChild(div);
    });
  }catch{}
}

fetchWeather();
setInterval(fetchWeather,1800000);
</script>
</body>
</html>