-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
310 lines (273 loc) · 19.9 KB
/
Copy pathindex.html
File metadata and controls
310 lines (273 loc) · 19.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<!doctype html>
<html class="no-js">
<head>
<meta charset="utf-8"/>
<title>ehryk.github.com</title>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!-- Adding "maximum-scale=1" fixes the Mobile Safari auto-zoom bug: http://filamentgroup.com/examples/iosScaleBug/ -->
<meta name="description" content="Code and Random Thingies" />
<meta name="keywords" content="Code,Ehryk,xkcd,Bookmarklet" />
<meta name="author" content="Eric Menze" />
<meta property="og:url" content="http://ehryk.github.io" />
<meta property="og:title" content="Ehryk" />
<meta property="og:image" content="img/Ehryk.png" />
<meta property="og:description" content="Code and Random Thingies" />
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" media="all" href="css/main.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/modernizr/2.8.3/modernizr.min.js"></script>
</head>
<body>
<!--[if lt IE 7]>
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
<![endif]-->
<div class="page">
<h1>ehryk.github.io</h1>
<h5>Random Thingies - for more: <a href="https://github.com/Ehryk">github</a>, <a href="https://ericmenze.com">portfolio</a>, or <a href="mailto:ehryk42@gmail.com">email</a>.</h5>
<section>
<div class="Detail">
<h3><a href="espsauna.html" title="Check it out!">ESPSauna</a></h3>
<p>An ESP32 based sauna controller for Home Assistant; powered from 100 to 240 VAC, with temperature, humidity, and current monitoring. Built on an ESP32-DEVKIT-V1 (U4) with an HLK-5M12 (PS1) AC–DC module, AP63203WU buck (U1), and AO3400A MOSFETs (Q1/Q2) PWM-driving TE-SPDT relays (RLY1/RLY2) for remote and safety heater control. AM2302/DHT22 (U3) and SHT45 sensors cover sauna and changing-room conditions; a 3.5 mm jack (J1) accepts a current clamp for stove current, power, and energy entities.</p>
</div>
<div class="Image">
<img src="Circuits/ESPSauna/Images/Front.jpg" alt="ESPSauna" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="espfridge.html" title="Check it out!">ESPFridge</a></h3>
<p>An ESP32 based fridge monitor for Home Assistant; powered from an 18650 battery, with temperature, humidity, and light monitoring. The ESP32-C3-WROOM-02 (U1) rides on a PCB sized to stack with the cell (BT1); a TMP117 (U6) provides ±0.3°C readings, an OPT3001DNPRQ1 (U4) detects door-open light levels, and DW01A plus 8205A (U2/U3) protect the pack while an MCP1700-3.3 (U5) and AO3401A (Q1) keep quiescent current low across deep-sleep wake cycles.</p>
</div>
<div class="Image left">
<img src="Circuits/ESPFridge/Images/Front.jpg" alt="ESPFridge" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="espprobe.html" title="Check it out!">ESPProbe</a></h3>
<p>An ESP32 based temperature monitor with triple K type thermocouples for Home Assistant; powered from USB C, used for my wood stove. An ESP32-DEVKIT-V1 (MCU1) hosts three MAX31855KASA (U1–U3) on screw terminals (J1–J3) for intake, chamber, and exhaust probes, plus an AM2302/DHT22 (U4) for ambient conditions; polling speeds up automatically when fire is detected.</p>
</div>
<div class="Image">
<img src="Circuits/ESPProbe/Images/Front.jpg" alt="ESPProbe" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="espradiator.html" title="Check it out!">ESPRadiator</a></h3>
<p>An ESP32 based electric radiator fan controller; with battery monitoring and HA integration. Built for a Jeep Wrangler aftermarket fan on an ESP32-DEVKIT-V1 (MCU1), with dual IRLZ44N MOSFETs (Q3/Q4) driven by a TC4427 (U3), LTV-827S optocouplers (U2) for ignition and A/C-clutch sense, an AP63203WU buck (U1), 3568 fuses (F1/F2), AO3401A battery-sense switch (Q1), and an ECT voltage divider.</p>
</div>
<div class="Image left">
<img src="Circuits/ESPRadiator/Images/Front.jpg" alt="ESPRadiator" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="espdrive.html" title="Check it out!">ESPDrive</a></h3>
<p>An ESP32 based monitor for vehicles and power wheels; checks battery voltage, outputs a status to an RGB led, has a ~12VDC output for upgrading to higher voltage main batteries. Centered on an ESP32-DEVKIT-V1 (MCU1) with AP63201WU (U2) and AP63203WU (U1) bucks, LTV-827S optocouplers (U3) for vehicle and light inputs, a TE-SPDT relay (R1) with AO3400A/AO3401A drivers, BAT54S clamping (D1), and a resistor-divider battery sense circuit.</p>
</div>
<div class="Image">
<img src="Circuits/ESPDrive/Images/Front.jpg" alt="ESPDrive" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="fertilator.html" title="Open the calculator">Fertilator</a></h3>
<p>A fertilization calculator for planning nutrient applications across the growing season; configure fertilizers, stage targets, seasonal totals, and weekly application schedules. Supports N-P-K-Ca-Mg-S seasonal targets and a product library from urea (46-0-0) and MAP/DAP/TSP through micronutrient blends, with stage-percentage tables, nutrient differentials, and weekly lb/acre rates — all calculated in the browser.</p>
</div>
<div class="Image left">
<img src="img/fertilator.jpg" alt="Fertilator" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="espkey.html" title="Generate an encryption key">ESPKey</a></h3>
<p>A browser-based ESPHome encryption key generator; creates a fresh 32-byte hex key ready to copy into your device YAML or secrets file. Keys are generated locally with <code>crypto.getRandomValues()</code> — never sent to a server — with a ready-to-paste <code>api: encryption: key:</code> YAML snippet you can copy or regenerate on demand.</p>
</div>
<div class="Image">
<img src="img/espkey.jpg" alt="ESPKey" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="https://gpxutil.com" title="Analyze a GPX track">GPX Data Analyzer</a></h3>
<p>Upload GPX files and analyze track data with activity-specific metrics beyond basic distance, time, and average velocity — skiing runs and lift speed, driving stops and acceleration, hiking elevation and rest periods, flying climb and descent rates, and more. Hosted at <a href="https://gpxutil.com">GPXutil.com</a>; source on <a href="https://github.com/Ehryk/GPXDataAnalyzer">GitHub</a>.</p>
</div>
<div class="Image left">
<img src="img/gpxutil-skiing.png" alt="GPX Data Analyzer" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="https://chrome.google.com/webstore/detail/alternative-copy/okpfaahmakpepeoahekhiehomdiikjjg" title="Install from the Chrome Web Store">AlternativeCopy</a></h3>
<p>A Chrome extension that maps Alt+C to copying a clean, shareable URL — stripping query strings, anchors, and site-specific clutter from Amazon, eBay, and YouTube links, and formatting local <code>file://</code> paths for the clipboard. Available on the <a href="https://chrome.google.com/webstore/detail/alternative-copy/okpfaahmakpepeoahekhiehomdiikjjg">Chrome Web Store</a>; source on <a href="https://github.com/Ehryk/AlternativeCopy">GitHub</a>.</p>
</div>
<div class="Image">
<img src="img/alternativecopy.jpg" alt="AlternativeCopy" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="http://www.htmlfivelive.com" title="Try the demos">HTML5Live</a></h3>
<p>An interactive single-page tour of HTML5 features — canvas drawing, semantic elements, new input types, CSS3 transforms and transitions, localStorage, and more — with live, tweakable demos. Visit <a href="http://www.htmlfivelive.com">htmlfivelive.com</a>; source on <a href="https://github.com/Ehryk/HTML5Live">GitHub</a>.</p>
</div>
<div class="Image left">
<img src="img/html5live-canvas.jpg" alt="HTML5Live" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="https://github.com/Ehryk/ContextMenuTools" title="View on GitHub">ContextMenuTools</a></h3>
<p>Windows context menu extensions for developers — Start PowerShell Here, Git Bash Here, Command Prompt Here (with optional Administrator variants), Cygwin, and drive-mapping shortcuts, with keyboard accelerators and custom prompt colors. Install via <code>Default Install.exe</code> or pick options from the <code>Default Installs</code> folder; includes an uninstaller and Control Panel entry.</p>
</div>
<div class="Image">
<img src="img/contextmenutools.png" alt="ContextMenuTools" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="https://github.com/Ehryk/HashCompute" title="View on GitHub">HashCompute</a></h3>
<p>A Windows console tool for computing MD5, SHA1, SHA256, SHA384, SHA512, and RIPEMD hashes from strings, files, or piped stdin — with file-list mode, encoding options, colored output, and pre-built binaries in the repo. Handy for quick checksums without leaving <code>cmd</code>.</p>
</div>
<div class="Image left">
<img src="img/hashcompute-cmd.png" alt="HashCompute" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="https://github.com/Ehryk/FileCrawler" title="View on GitHub">FileCrawler</a></h3>
<p>A Windows console application that enumerates directory contents — including files inside supported archive formats via 7-Zip — and can emit results to the console, XML, JSON, or a SQL Server database. Useful for inventorying nested folder trees and compressed packages in one pass.</p>
</div>
<div class="Image">
<img src="img/filecrawler.jpg" alt="FileCrawler" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="https://github.com/Ehryk/StreamFile" title="View on GitHub">StreamFile</a></h3>
<p>Streams or saves files into a SQL Server database file system through C# CLR stored procedures, breaking large files into configurable buffers (default 4 KB) instead of loading them entirely into memory. Includes the <code>StreamFile</code> console app and database setup scripts.</p>
</div>
<div class="Image left">
<img src="img/streamfile.jpg" alt="StreamFile" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="https://github.com/Ehryk/sdetools" title="View on GitHub">SDETools</a></h3>
<p>ESRI geodatabase utilities for Windows — <code>sde2string</code> decodes <code>.sde</code> connection files to connection strings (with list, bracketless, and connect-test modes), and <code>gdbconfig</code> automates geodatabase configuration tasks such as domain and model-name management for deployments.</p>
</div>
<div class="Image">
<img src="img/sdetools-sde2string.jpg" alt="SDETools sde2string usage" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="https://github.com/Ehryk/NameShield" title="View on GitHub">NameShield</a></h3>
<p>Custom Arduino shields with Fritzing-designed PCBs that spell a name in LEDs — Eric, Matt, Bill, RDI, and others — with tact switches to cycle through 17 animation modes from all-on and sequential waves to per-letter blinks and fades. Includes shield schematics, Arduino sketches, and <a href="https://www.youtube.com/watch?v=vqsRCEPevEo">demo videos</a>.</p>
</div>
<div class="Image left">
<img src="img/nameshield-eric.jpg" alt="NameShield" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="https://github.com/Ehryk/GearDisplay" title="View on GitHub">GearDisplay</a></h3>
<p>An Arduino-based manual-transmission gear indicator using hall-effect sensors on the shifter shaft — reads six analog inputs, applies a tolerance band, and displays the selected gear on a 16×2 LCD (v1), a cased dash unit with ultracap keep-alive (v2, installed in a 2003 Jeep Wrangler), or a color touchscreen (v3). Includes sensor ring photos, schematics, and <a href="https://www.youtube.com/watch?v=FTQq74HFvWU">operation videos</a>.</p>
</div>
<div class="Image">
<img src="img/geardisplay-dash.jpg" alt="GearDisplay" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="https://github.com/Ehryk/ArduinoMonitor" title="View on GitHub">ArduinoMonitor</a></h3>
<p>A toolchain for logging Arduino sensor data — sketch output over serial, a Processing graph for live verification, and a C# console app that logs readings to a file, a SQL Server database, or both. TopShelf-enabled so the logger can run as a Windows service.</p>
</div>
<div class="Image left">
<img src="img/arduinomonitor-graph.png" alt="ArduinoMonitor" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="javascript:(function(){var e={a:1,style:1,script:1,iframe:1};var t=function(r,i,s){var o,u;for(var a=r.childNodes.length-1;a>=0;a--){o=r.childNodes[a];if(o.nodeType==1){u=o.nodeName.toLowerCase();if(!(u in e)){t(o,i,s)}}else if(o.nodeType==3){n(o,i,s)}}};var n=function(e,t,n){var r,i=[];while(r=t.exec(e.data)){i.push(r)}for(var s=i.length-1;s>=0;s--){r=i[s];e.splitText(r.index);e.nextSibling.splitText(r[1].length);e.parentNode.replaceChild(n(r[1]),e.nextSibling)}};var r={'power':'The Throne','Donald Trump':'King Lannister','Reince Priebus':'the Hand of the King','Trump Towers':'Tower fo Joy','Eric Trump':'Joffrey','Border Wall':'Mexicans are Coming','Milania':'Cersei','Tiffany Trump':'Daenerys Targaryen','Ivanka':'Melisandre','Trump':'Lannister','election':'duel to the death','winter is coming':'Illegals are Coming'};var i='';for(var s in r){i+=s+'|'}i=i.substring(0,i.length-1);t(document.body,new RegExp('\\b('+i+')\\b','g'),function(e){var t=document.createElement('span');t.innerHTML=r[e];t.style.fontWeight='Bold';return t})})()" title="Drag Me to your Bookmarks!">Game of Trump</a></h3>
<p>Sick of all the tiring mentions of Trump all over? This is a bookmarklet that you can add to your bookmarks bar that will replace mentions of Trump, his cabinet, and common rhetoric of his with Game of Throne references. A great example page to start with is the <a href="https://en.wikipedia.org/wiki/Donald_Trump_on_social_media">Donald Trump on social media</a> article on Wikipedia.</p>
</div>
<div class="Image">
<img src="img/DeTrumpify.png" alt="DeTrumpify" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="javascript:(function(){var e={a:1,style:1,script:1,iframe:1};var t=function(r,i,s){var o,u;for(var a=r.childNodes.length-1;a>=0;a--){o=r.childNodes[a];if(o.nodeType==1){u=o.nodeName.toLowerCase();if(!(u in e)){t(o,i,s)}}else if(o.nodeType==3){n(o,i,s)}}};var n=function(e,t,n){var r,i=[];while(r=t.exec(e.data)){i.push(r)}for(var s=i.length-1;s>=0;s--){r=i[s];e.splitText(r.index);e.nextSibling.splitText(r[1].length);e.parentNode.replaceChild(n(r[1]),e.nextSibling)}};var r={witnesses:'these dudes I know',allegedly:'kinda probably','new study':'Tumblr post',rebuild:'avenge',space:'spaaace','google glass':'Virtual Boy',smartphone:'Pokedex',electric:'atomic',senator:'Elf-lord',car:'cat',election:'eating contest','congressional leaders':'River Spirits','homeland security':'homestar runner','could not be reached for comment':'is guilty and everyone knows it'};var i='';for(var s in r){i+=s+'|'}i=i.substring(0,i.length-1);t(document.body,new RegExp('\\b('+i+')\\b','g'),function(e){var t=document.createElement('span');t.innerHTML=r[e];t.style.fontWeight='Bold';return t})})()" title="Drag Me to your Bookmarks!">xkcd 1288 - Substitutions bookmarklet</a></h3>
<p>This is a bookmarklet that you can add to your bookmarks bar that will perform the text replacements in <a href="http://xkcd.com/1288/">xkcd #1288</a>. To add it, drag the title into your bookmarks section or bookmarks bar. A great example page to start with is the <a href="https://simple.wikipedia.org/wiki/Car">Car Entry</a> in the simple Wikipedia.</p>
</div>
<div class="Image left">
<img src="img/xkcd-substitutions.png" alt="xkcd the News" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="javascript:(function(){var e={a:1,style:1,script:1,iframe:1};var t=function(r,i,s){var o,u;for(var a=r.childNodes.length-1;a>=0;a--){o=r.childNodes[a];if(o.nodeType==1){u=o.nodeName.toLowerCase();if(!(u in e)){t(o,i,s)}}else if(o.nodeType==3){n(o,i,s)}}};var n=function(e,t,n){var r,i=[];while(r=t.exec(e.data)){i.push(r)}for(var s=i.length-1;s>=0;s--){r=i[s];e.splitText(r.index);e.nextSibling.splitText(r[1].length);e.parentNode.replaceChild(n(r[1]),e.nextSibling)}};var r={'is':'was','has':'had','having':'which once had','are':'were','have':'have had','doing':'did','plays':'played','occurs':'occurred','provides':'provided'};var i='';for(var s in r){i+=s+'|'}i=i.substring(0,i.length-1);t(document.body,new RegExp('\\b('+i+')\\b','g'),function(e){var t=document.createElement('span');t.innerHTML=r[e];t.style.fontWeight='Bold';return t})})()" title="Drag Me to your Bookmarks!">Convert to Past Tense</a></h3>
<p>This is a bookmarklet that you can add to your bookmarks bar that will change common verbs to past tense for a more dystopian feel - it works especially well on wikipedia articles. To add it, drag the title into your bookmarks section or bookmarks bar. A great example page to start with is <a href="https://en.wikipedia.org/wiki/Water">Water</a> on Wikipedia.</p>
</div>
<div class="Image">
<img src="img/past-tense.png" alt="Dystopify the Web" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail left">
<h3><a href="mike/" title="Put those sites together">Combine two sites and we'll dial it in later</a></h3>
<p>Ever been asked to '<a href="mike/">put two sites together</a>'? My friend was, so I thought I'd help her out. Click and the 'site' switches, now with dials for 'dialing it in'.</p>
</div>
<div class="Image left">
<img src="img/mike.jpg" alt="Put Together" />
</div>
<div class="clearfix">
</section>
<section>
<div class="Detail">
<h3><a href="name-js/" title="Name-That-JS.js">Javascript library name assistant</a></h3>
<p><a href="name-js/">name-js</a> is a clone/implementation of <a href="https://github.com/EpochFail">EpochFail</a>'s <a href="https://github.com/EpochFail/name-js">name-js</a> and <a href="https://github.com/EpochFail/word">word</a> projects, when <a href="http://wutjs.com">wutjs.com</a> was down.</p>
</div>
<div class="Image">
<img src="img/name-js.jpg" alt="Name-JS" />
</div>
<div class="clearfix">
</section>
<footer>
<hr />
<p>© Eric Menze 2013</p>
</footer>
</div>
<div id="image-overlay" class="image-overlay" aria-hidden="true">
<div class="image-overlay-content"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/jquery@4.0.0/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>
<script src="js/overlay.js"></script>
<script src="js/esp-images.js"></script>
</body>
</html>