View Source

The actual code behind this page. No minification. No transpilation. What you see is what runs.

↓ Download PHP edition
j.php 246 lines
<?php
$pageTitle = "J's stuff — dispelled.ca";
$currentPage = 'j';
require_once __DIR__ . '/includes/config.php';
require_once __DIR__ . '/includes/weather.php';
$weather = getWeather();
$SECTIONS = [
'Weather' => [
['Ardill Weather', 'https://www.wunderground.com/weather/ca/ardill/IARDIL4'],
['Weather Network', 'http://www.theweathernetwork.com/weather/cask0214'],
['SK Highway Hotline', 'https://hotline.gov.sk.ca/map'],
['Weather Canada', 'https://weather.gc.ca/city/pages/sk-51_metric_e.html'],
['Weather Underground', 'https://www.wunderground.com/weather/ca/mossbank/49.94,-105.96'],
],
'Coffee Time' => [
['Gab', 'https://gab.com/'],
['Reddit', 'http://reddit.com/'],
['Slashdot', 'http://slashdot.org/'],
['Ars Technica', 'http://arstechnica.com/'],
['Netgate Forums', 'https://forum.netgate.com/'],
['The Linux Code', 'https://thelinuxcode.com/'],
['Typing', 'https://www.typing.com/'],
['Chess', 'https://www.chess.com/play/computer'],
['Yousician', 'https://yousician.com/'],
['Bible.com', 'https://www.bible.com/reading-plans'],
['Norquay Covenant Church', 'https://www.facebook.com/norquaycovenantchurch/'],
],
'Other Media' => [
['Thinkspot', 'https://www.thinkspot.com/'],
['The Beartaria Times', 'https://app.beartariatimes.com/'],
['Rumble', 'https://rumble.com/'],
['Bitchute', 'https://www.bitchute.com/'],
['WND', 'https://www.wnd.com/'],
['Infowars', 'https://infowars.com/'],
],
'Music' => [
['Ableton', 'https://ableton.com/'],
['Ableton Forum', 'https://forum.ableton.com/'],
['Ableton Manual', 'https://www.ableton.com/en/manual/live-concepts/'],
['Focusrite', 'https://focusrite.com/'],
['Roland Cloud', 'https://rolandcloud.com/'],
['Addictive Drums', 'https://www.xlnaudio.com/products/addictive_drums_2'],
['Songsterr', 'https://www.songsterr.com/'],
["Scott's Bass Lessons",'https://scottsbasslessons.com/'],
['Juststrings', 'http://www.juststrings.com/'],
],
'VST Effects' => [
['Positive Grid (Bias AMP/FX/Pedal)', 'https://www.positivegrid.com/'],
['Valhalla DSP', 'https://valhalladsp.com/'],
],
'Sound Packs' => [
['Production Labs', 'https://www.production-labs.com/'],
['Unison Audio', 'https://unison.audio/'],
['Groove Monkee', 'https://groovemonkee.com/'],
['Oddgrooves', 'https://oddgrooves.com/'],
['ADSR Sounds', 'https://www.adsrsounds.com/'],
],
'VSTs' => [
['Ampeg SVT Suite', 'https://ampeg.com/svt-suite/'],
['Arturia', 'https://www.arturia.com/support/downloads&manuals'],
['GG Audio - Blue3', 'https://gg-audio.com/blue3.html'],
['AAS - Lounge Lizard', 'https://www.applied-acoustics.com/lounge-lizard-ep-4/'],
["Lost in 70's", 'https://lostin70s.com/'],
['Klimper 2', 'https://www.klimper-plugin.com/products/klimper-2'],
['Orb Producer Suite', 'https://www.orbplugins.com/orb-producer-suite/'],
['Plugin Alliance', 'https://www.plugin-alliance.com/'],
],
'Programming' => [
['Learn X in Y Minutes', 'https://learnxinyminutes.com/'],
['Think in Geek — Exploring Aarch64', 'https://thinkingeek.com/series/exploring-aarch64/'],
['MarioKartWii ARM Aarch64 Assembly', 'https://mariokartwii.com/armv8/'],
['Geeks for Geeks', 'https://www.geeksforgeeks.org/'],
['ARM64 / AArch64 Assembly Guide', 'https://modexp.wordpress.com/2018/10/30/arm64-assembly/'],
['TutorialsPoint C Tutorial', 'https://www.tutorialspoint.com/cprogramming/index.htm'],
['GNU Bash Manual', 'https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html'],
],
'Rapidtables' => [
['ASCII / Hex / Bin / Dec Converter', 'https://www.rapidtables.com/convert/number/ascii-hex-bin-dec-converter.html'],
['Decimal to Hex', 'https://rapidtables.com/convert/number/decimal-to-hex.html'],
['Binary to Hex', 'https://rapidtables.com/convert/number/binary-to-hex.html'],
['Decimal to Binary', 'https://rapidtables.com/convert/number/decimal-to-binary.html'],
['Hex to Binary', 'https://rapidtables.com/convert/number/hex-to-binary.html'],
['Hex to Decimal', 'https://rapidtables.com/convert/number/hex-to-decimal.html'],
['Binary to Decimal', 'https://rapidtables.com/convert/number/binary-to-decimal.html'],
['Binary to String', 'https://rapidtables.com/convert/number/binary-to-string.html'],
['String to Binary', 'https://rapidtables.com/convert/number/string-to-binary.html'],
],
'Prepping' => [
['Preppers Reddit', 'https://reddit.com/r/preppers/'],
['Ask a Prepper', 'https://askaprepper.com'],
],
'Web Tools' => [
['Proton', 'https://proton.me/'],
['Shopify', 'https://shopify.com/'],
['Namecheap', 'https://namecheap.com/'],
['What is my IP', 'https://www.whatismyip.com'],
['DNS Leak Test', 'https://www.dnsleaktest.com/'],
['SSL Checker', 'https://decoder.link/sslchecker/'],
['Mail Tester', 'https://www.mail-tester.com/'],
['DKIM Validator', 'https://dkimvalidator.com/'],
['Font Squirrel', 'https://www.fontsquirrel.com/tools/webfont-generator'],
['Favicon.io', 'https://favicon.io/favicon-converter/'],
['Pingdom', 'http://tools.pingdom.com/fpt/'],
['OpenDNS', 'https://opendns.com/'],
['Speedtest.net', 'https://speedtest.net/'],
['W3C Markup Validator','https://validator.w3.org/'],
],
'Shopping' => [
['Amazon', 'https://amazon.ca'],
['Temu', 'https://Temu.com'],
['Digikey', 'https://Digikey.com'],
['Costco', 'https://Costco.ca'],
],
'Skateboarding, Biking & Shades' => [
['Area 51 Skateshop', 'http://a51.ca'],
['Primary Skateboards', 'https://primaryskateboards.ca/'],
['The Bike Shop Calgary', 'https://www.thebikeshop.com/'],
['Foster Grant', 'https://fostergrant.com/'],
],
'Buy and Sell' => [
['eBay', 'https://ebay.ca/'],
['Kijiji Musical Instruments', 'https://www.kijiji.ca/b-musical-instrument/moose-jaw/c17l1700195'],
['Used Regina Musical Instruments', 'http://www.usedregina.com/classifieds/musical-instruments'],
['Sask. Kijiji Classic Cars — Ford', 'https://www.kijiji.ca/b-classic-cars/saskatchewan/ford/k0c122l9009'],
],
'3D Printing' => [
['Thingiverse', 'https://thingiverse.com/'],
['Thangs', 'https://thangs.com/?sort=likes&range=month'],
['Cults 3D', 'https://cults3d.com/'],
['Printables', 'https://www.printables.com/'],
['My Mini Factory', 'https://www.myminifactory.com/search/?stw=1&sortBy=date&featured=1'],
['Youmagine', 'https://www.youmagine.com/'],
['Creality', 'https://www.creality.com/pages/download/'],
['Cura by Ultimaker','https://ultimaker.com/software/ultimaker-cura/'],
],
'Hunting' => [
['Saskatchewan Hunting Guide 2024-25', 'https://pubsaskdev.blob.core.windows.net/pubsask-prod/140653/2024-25%252BHunters%252BGuide.pdf'],
['Targets.ws', 'https://www.targets.ws/'],
['Thompson Target', 'https://www.thompsontarget.com/hunting-shooting-targets/'],
['Targets For Free', 'https://targets4free.com/'],
],
'Stocks' => [
['Superstonk Reddit', 'https://www.reddit.com/r/superstonk/'],
['GameStop (MarketWatch)', 'https://www.marketwatch.com/investing/stock/gme'],
['Vaalco (MarketWatch)', 'https://www.marketwatch.com/investing/stock/egy'],
['MPXI (MarketWatch)', 'https://www.marketwatch.com/investing/stock/mpxi?countrycode=ca'],
['BTZI (MarketWatch)', 'https://www.marketwatch.com/investing/stock/BTZI'],
['Exro Technologies (MarketWatch)', 'https://www.marketwatch.com/investing/stock/exro'],
],
'Books & Audiobooks' => [
['Palliser Library', 'https://palliserlibrary.com/'],
['Audible', 'http://www.audible.com/'],
['LibriVox', 'https://librivox.org/search?primary_key=0&search_category=genre&search_page=1&search_form=get_results'],
['Archive.org Audiobooks','https://archive.org/details/audio_bookspoetry'],
],
'Farming' => [
['My CNH Store', 'https://www.mycnhstore.com/us/en/default/'],
['My John Deere', 'https://myjohndeere.deere.com/mjd/my/login'],
['Bin Sense', 'https://my.intragrain.com/'],
],
'Fitness' => [
['IFit Dashboard', 'https://www.ifit.com/'],
['Concept2 Rowing Logbook','https://log.concept2.com/log'],
['Stronglifts 5x5', 'http://stronglifts.com/5x5/'],
['Myfitnesspal', 'https://www.myfitnesspal.com/'],
['T-Nation', 'https://www.t-nation.com/'],
],
'Games' => [
['Honkai Star Rail', 'https://hsr.hoyoverse.com/en-us/'],
['HSR Reddit', 'https://www.reddit.com/r/HonkaiStarRail/'],
['Genshin Impact', 'https://genshin.hoyoverse.com/en/'],
['Genshin Reddit', 'https://www.reddit.com/r/Genshin_Impact/'],
['HoyoLab', 'https://www.hoyolab.com/home'],
],
];
require_once __DIR__ . '/includes/header.php';
?>
<h1 class="page-title">J&#8217;s stuff</h1>
 
<?php if ($weather): ?>
<?php
$days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];
?>
<div class="weather-widget">
<div class="weather-current">
<div class="weather-icon"><?= $weather['icon'] ?></div>
<div class="weather-main">
<div>
<span class="weather-temp"><?= $weather['temperature'] ?>&deg;C</span>
<span class="weather-feels">feels like <?= $weather['feelsLike'] ?>&deg;</span>
</div>
<div class="weather-condition"><?= htmlspecialchars($weather['condition']) ?></div>
<div class="weather-location"><?= htmlspecialchars($weather['location']) ?></div>
</div>
<div class="weather-stats">
<div>
<div class="weather-stat-value"><?= $weather['humidity'] ?>%</div>
<div class="weather-stat-label">Humidity</div>
</div>
<div>
<div class="weather-stat-value"><?= $weather['windSpeed'] ?>&nbsp;km/h</div>
<div class="weather-stat-label"><?= htmlspecialchars($weather['windDirection']) ?></div>
</div>
</div>
</div>
<div class="forecast-strip">
<?php foreach ($weather['forecast'] as $i => $day):
$dt = new DateTime($day['date']);
$label = $i === 0 ? 'Today' : $dt->format('D');
$precip = $day['precipitationProbability'];
?>
<div class="forecast-day">
<span class="forecast-label"><?= $label ?></span>
<span class="forecast-icon"><?= $day['icon'] ?></span>
<span class="forecast-high"><?= $day['high'] ?>&deg;</span>
<span class="forecast-low"><?= $day['low'] ?>&deg;</span>
<?php if ($precip > 0): ?>
<span class="forecast-precip"><?= $precip ?>%</span>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
<div class="j-sections-grid">
<?php foreach ($SECTIONS as $category => $links): ?>
<section class="j-section">
<h2><?= htmlspecialchars($category) ?></h2>
<ul>
<?php foreach ($links as [$label, $url]): ?>
<li><a href="<?= htmlspecialchars($url) ?>" target="_blank" rel="noreferrer"><?= htmlspecialchars($label) ?></a></li>
<?php endforeach ?>
</ul>
</section>
<?php endforeach ?>
</div>
 
 
<?php require_once __DIR__ . '/includes/footer.php'; ?>