Skip to content

Instantly share code, notes, and snippets.

View ctigeek's full-sized avatar

Steven Swenson ctigeek

View GitHub Profile
@ctigeek
ctigeek / license-quiz.html
Last active September 12, 2026 17:50
A stand-alone web page that quizzes you on ALL the questions for the new Amateur Technician Ham Radio License Test.
<!DOCTYPE html>
<html lang="en">
<head>
<!-- DIRECTIONS -->
<!-- Download and save as quiz.html -->
<!-- Double click to open in your browser! -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Technician Class HAM Radio Quiz</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
@ctigeek
ctigeek / 6502.ino
Created September 23, 2024 12:06
Arduino 6502
void FillRom(byte *buffer) {
for (int i=0x00; i<= 0x06; i++) {
buffer[i] = 0xEA;
}
//load A with 0x77 and push
buffer[0x07] = 0xA9;
@ctigeek
ctigeek / SoapApiTest.cs
Created January 4, 2021 21:55
Calling the soap api
using System;
using NUnit.Framework;
namespace RackspaceSoapTest
{
[TestFixture]
public class Class1
{
[Test]
public void Test1()
@ctigeek
ctigeek / TcpListener.cs
Created June 22, 2020 21:49
A simple TCP listener. Assumes you're sending UTF8 text to it.
using System;
using System.IO;
using System.Net;
using System.Text;
namespace TcpListener
{
class Program
{
static void Main(string[] args)
public interface IGenericCache<T>
{
TimeSpan CacheTtl { get; set; }
Func<T> LoadCache { get; set; }
T ReturnCache();
T ForceRefresh();
}
public class GenericCache<T> : IGenericCache<T>
{
@ctigeek
ctigeek / Tjson.cs
Created January 24, 2019 15:34
Tjson Deserializer....
// written by Steven Swenson
// Released under the MIT open source license...
// No warranty at all. use at your own risk.
public static class Tjson
{
//https://gist.github.com/ctigeek/4950c4b07a50a0791f012858e3bb2214
private static readonly Splitter.Preserver QuotePreserver = new Splitter.Preserver { Start = '"', End = '"', Escape = '\\' };
private static readonly Splitter.Preserver CurlyBoiPreserver = new Splitter.Preserver { Start = '{', End = '}', Escape = '\\', Recursive = true, SubPreserver = QuotePreserver };
private static readonly Splitter.Preserver BracketPreserver = new Splitter.Preserver { Start = '[', End = ']', Escape = '\\', Recursive = true, SubPreserver = QuotePreserver };
@ctigeek
ctigeek / Split.cs
Last active January 24, 2019 15:16
Split a string on a character, but don't split based on start-end characters.
/// <summary>
/// Split a string while preserving sections of it.
/// Similar to string.Split, but you can define start-end characters (e.g. quotes, brackets, braces) inside of which it will NOT split.
/// Preservers can also be "recursive" which means it can determine if it's in nested brackets or parens, etc.
/// If the start & end characters are different, there's a good chance you want to set recursive to true.
/// See the associated unit test for an example that can parse json....
/// Also supports escape characters so the separator and start-end characters can be ignored.
/// </summary>
public class Splitter
@ctigeek
ctigeek / EncryptionExample.cs
Created June 19, 2018 15:36
File Encryption example.
using System;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography;
namespace EncryptionExample
{
class Program
{
static void Main(string[] args)
@ctigeek
ctigeek / Retry.cs
Created April 11, 2018 00:34
Retry pattern
public static class Retry
{
public static void Do(Action action, TimeSpan retryInterval, int maxAttemptCount)
{
try
{
action();
}
catch
{
@ctigeek
ctigeek / Import-XlsData.ps1
Last active March 13, 2018 18:13
Query XLS spreadsheet from powershell
function Import-XlsData($filePath) {
## You have to have these drivers...
##https://www.microsoft.com/en-us/download/confirmation.aspx?id=13255
##The first row will be the column names
##This only looks at the first sheet. If you want a different sheet you'll have to adjust the table name retrieved from $schema.
$strProvider = "Provider=Microsoft.ACE.OLEDB.12.0"
$strDataSource = "Data Source=$filePath"
$strExtend = "Extended Properties='Excel 12.0;IMEX=1'"