Sign in

James Kane

@jameskane.blog
363 followers 362 following 213 posts

Software Engineer. Retro Computing. Genetic Genealogist. Fitness Enthusiast. TTRPG Gamer. Living the in the American Midwest.

PostsRepliesMedia
James Kane @jameskane.blog · 01/10/2026
Same desktop using the Aqua theme. Iconography needs work...
000
James Kane @jameskane.blog · 01/10/2026
My FreeBSD fork to add the Radxa Dragon Q8B is coming along nicely. The NeXT/SGI/AmigaMUI inspired theme for a new desktop environment written in Swift 6 is now running on it. Most of the hardware for a desktop experience is fully operating.
121
James Kane @jameskane.blog · 29/09/2026
Opus 5.5 now has finished accelerated GPU paths for the Dragon Q8B on #FreeBSD. Roughly the same FPS as Radxa's Ubuntu image. Now to get it to clean up the mess.
021
James Kane @jameskane.blog · 28/09/2026
I have pointed Claude Opus 5.5 at the #FreeBSD source and the #Radxa Dragon Q8B. It has a near feature complete driver for the two ethernet ports. Now it's iterating on more driver support via SSH. Feature branch for any interested: github.com/JamesKane/fr...
github.com
GitHub - JamesKane/freebsd-src at radxa-dragon-q8b
The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests.... - JamesKane/freebsd-src
000
James Kane @jameskane.blog · 26/09/2026
The Geekbench 6 score for the #Radxa Dragon Q8B. It's a little faster than the Orange PI 6 Plus board using four fewer cores to do it. 1651 Single-Core, 6833 Multi-Core
000
James Kane @jameskane.blog · 25/09/2026
New SBC received: Radxa Dragon Q8B w/ 16 GB of RAM Now to find an NVMe to boot it from and get some benchmarks.
000
James Kane @jameskane.blog · 15/08/2026
The latest installers can be found at decoding-us.org/download. 3-Clause BSD source code: github.com/JamesKane/de...
decoding-us.org
Download the Navigator — Decoding Us
000
James Kane @jameskane.blog · 15/08/2026
Added a read remapping harness in Decoding-Us Navigator's latest Alpha build. Remap your hg37 or hg38 direct-2-consumer BAM to chm13v2.0 freely and locally on a computer with at least 16GB of RAM and a few hundred GB of disk space. #genetic #genealogy #Big-Y #Y-Elite
100
James Kane @jameskane.blog · 09/08/2026
MDKA informational boxes for samples under the terminal branches for people who opt-in from Navigator is the current work in progress.
000
James Kane @jameskane.blog · 09/08/2026
Starting to work Block Tree aka Icicle tree rendering into decoding-us.org. Limiting these to the genealogical era as the amount of data blows up the further back you allow. ytree.net and FTDNA's render speeds are unacceptable. decoding-us.org/ytree/node/R...
decoding-us.org
Ancestral origins · R-A9005 — Decoding Us
100
James Kane @jameskane.blog · 06/08/2026
The latest feature branch for the Navigator project system is coming together: Icicle blocks derived from Alex Williamson’s ytree. Identification of shared SNPs, which may represent new branches. It should land in a new Alpha release this weekend. #YDNA #Genealogy #DataVisualization
Screenshot of the DecodingUs Navigator app showing an icicle plot of the CTS4466 Y‑DNA tree, with a highlighted candidate branch (Candidate 1) spanning roughly 1900–1800 BC on a timeline from ~2015 BC to the present.
010
James Kane @jameskane.blog · 29/07/2026
Added a new report at decoding-us.org, which displays the Y-DNA STR ranges, published mutation rates, and motif values where available. There's a job setup to calculate new mutation rates when the sample size gets larger. decoding-us.org/str-markers #Genetic #Genealogy
decoding-us.org
Y-STR Markers — Decoding Us
000
James Kane @jameskane.blog · 28/07/2026
Working on an Archaic DNA module based on Altai, Chagyrskaya8, Denisova3 and Vindija33. Mostly working and Denisovan DNA being rejected for a European sample. Need to run on some Oceanic samples to validate the rest and clean-up the final reports.
Screenshot showing archaic ancestry results: 12,126 Neanderthal/Denisovan allele copies detected across 299,932 marker sites (100% coverage). Breakdown: 9,460 Neanderthal-diagnostic, 2,412 shared-archaic. Result is higher than 7% of European reference samples. Note: Denisovan-specific markers not reported outside Oceania; counts aren’t directly comparable to other companies’ data.
000
James Kane @jameskane.blog · 25/07/2026
github.com/JamesKane/de...
github.com
Releases · JamesKane/decodingus-navigator
Decoding-Us Navigator is an Edge-computing companion tool for genetic genealogy and anthropology - JamesKane/decodingus-navigator
000
James Kane @jameskane.blog · 25/07/2026
Latest Alpha Build for Decoding-Us Navigator. Rewrote the Chromosome Painter to better isolate the two parents. Added more populations from public datasets. Fixed all the reported issues in older releases. #OpenSource #Genetic #Genealogy
Screenshot of the Decoding-Us Navigator interface. The left sidebar lists subject IDs. The main panel displays a "Your DNA sides" section featuring a chromosome painting chart. Horizontal bars representing chromosomes 1 through 22 are filled with various shades of blue blocks. A legend below the chart identifies ancestral origins such as British, Tuscan, Finnish, and Iberian. At the bottom is an AI input box labeled "Ask about your results."
241
James Kane @jameskane.blog · 12/07/2026
Built in Rust with no complex dependencies, Navigator supports "progressive consensus" to cross-check multiple DNA kits & syncs anonymized results via AT Protocol for tree building. Join the Alpha: jameskane.blog/genomics/202... #RustLang #ATProto #OpenSource
jameskane.blog
Navigator Alpha: Run Your Own Genomics Lab on Your Own Machine
Navigator is the desktop app that turns your own computer into the analysis lab. Point it at a BAM, CRAM, or a raw data file from a consumer test, and it does the coverage, the Y and mitochondrial hap...
040
James Kane @jameskane.blog · 12/07/2026
🧬 Introducing Navigator Alpha: a local desktop genomics app. Process BAM/CRAM, VCF, or chip tests (23andMe/Ancestry) offline with zero cloud uploads or privacy risks. Run Y/mt haplogroups, coverage, & ancestry on your own hardware. #Genomics #Bioinformatics #GeneticGenealogy 👇
140
James Kane @jameskane.blog · 04/07/2026
Check it out at decoding-us.org/ytree?root=R....
decoding-us.org
Y-DNA Tree — Decoding Us
010
James Kane @jameskane.blog · 04/07/2026
The Formed and TMRCA ages are based on McDonald's (2021), Improved Models of Coalescence Ages of Y-DNA Haplogroups. doi.org/10.3390/gene...
doi.org
100
James Kane @jameskane.blog · 04/07/2026
Unlike prior examples, I did take pains to use FTDNA's labels where they are not obviously in need of improvement or don't exist. The side panel shows the defining SNP(s) placements on b37, b38 and hs1 (chm13v2). Where available it also reconstructs the STR signature transitions from the parent.
A screenshot of the Decoding Us Y-DNA tree with a detailed information panel open on the right. The tree shows various branching haplogroups, and the side panel displays specific genetic data for the selected node "R-S1115," including its TMRCA (Time to Most Recent Common Ancestor), specific SNP mutations, and Y-STR ancestral motifs.
100
James Kane @jameskane.blog · 04/07/2026
The Decoding-Us AppView is now running the Rust-version and hosting my latest chm13v2-based haplogroup trees. Y-DNA is sourced from IGSR samples and YDNA Warehouse samples. mtDNA is IGSR samples.
A phylogenetic tree diagram of Y-DNA lineages from the Decoding Us project. The chart shows a branching ancestral path starting from a root "Y" node, splitting into major branches like A0-T and A1, which further divide into numerous smaller sub-clades (yellow boxes) with associated variant counts and TMRCA (Time to Most Recent Common Ancestor) dates.A phylogenetic tree diagram of mitochondrial DNA (mtDNA) from the Decoding Us project. The lineage begins with the L0a node, branching through L0a1 into further sub-groups like L0a1-A2000 and L0a1b. A list of specific biosamples is displayed on the right side of the tree.
110
James Kane @jameskane.blog · 04/07/2026
I have the 32GB model. When purchased in January, this was a no-brainer upgrade. Like most SBCs the RAM is soldered on. It will be interesting to watch if this changes. Putting SODIMMs on the boards is the only way they will "beat" RAMogedden.
010
James Kane @jameskane.blog · 02/07/2026
With the used market having Ivy Bridge or newer systems like the Trashcan Mac going for $200 or less, it's hard to look at the SBCs here and their current pricing with RAM shortages as viable. Even if the Intels are using 10x the energy...
000
James Kane @jameskane.blog · 02/07/2026
OrangePi 6 Plus running stock Ubuntu instead of the vendor image. Minimap2 alignment performance. Total Reads. Total Time Reads/Sec 615605482 3h 50m 0s 14ms 160592.571514783 Roughly the same performance as a 12-core Mac Pro 2013.
A Linux terminal window showing system information fetched via a neofetch-style tool. On the left is the Ubuntu logo in red ASCII art. On the right, the system specs read: jkane@CIX-Phecda-Board; OS: Ubuntu 26.04 LTS (Resolute R4); Host: CIX Phecda Board (1.0); Kernel: Linux 7.0.0-38-cix; Uptime: 3 mins; Shell: bash 5.3.9; DE: GNOME 50.1; WM: Mutter (Wayland); CPU: Cortex-A720*2 + Cortex-A520z; GPU: Mali-G720 MC10 [Integrated]; Memory: 5.54 GiB / 29.82 GiB. A row of color palette blocks sits at the bottom of the text.
320
James Kane @jameskane.blog · 18/06/2026
I am highly amused by Claude Code's thinking streams when dealing with FTDNA's Big Y VCF data. Everything I've muttered over the last decade when a BAM wasn't available, so I could just ignore their oddities. #genetic #genealogy
000
James Kane @jameskane.blog · 17/06/2026
2. Strength: Structural variants. The graph recovers ~80% of HiFi SVs. Delly gets 26% on chr20 and collapses to 14% on chr16. The harder the region, the bigger the graph’s edge. Full analysis: jameskane.blog/genomics/202... (3/3)
jameskane.github.io
What a Pangenome Misses, and What It Nails
My last post argued that a genotype-only pangenome callset silently misses variation and quietly carries structural variation. This time I put numbers on both claims, across two whole chromosomes, wit...
000
James Kane @jameskane.blog · 17/06/2026
1. Weakness: Small variants. The graph is blind to private SNPs because they aren't in the panel (99% representation gap). It also over-calls noise in repetitive regions (only 43% confirm). Standard linear callers win here. (2/3)
100
James Kane @jameskane.blog · 17/06/2026
What does a genotype-only pangenome callset miss, and what does it nail? I put numbers on both claims across chr20 & chr16, using 3 callers (vg, GATK, Delly) and a low-coverage PacBio HiFi long-read reality check. The trade-off is not what I expected. 🧵 (1/3)
100
James Kane @jameskane.blog · 17/06/2026
First generation of the de novo mtDNA tree is live in the Decoding Us dev region. 🧬 Built using 1K Genomes raw data realigned to CHM13v2 (T2T), processed via GATK, and structured with IQ-TREE. Native, clean rendering of the U5a1 branch subclades. Moving beyond just Y-DNA.
A web browser screenshot of the Decoding Us platform developer region displaying an interactive mitochondrial DNA (mtDNA) phylogenetic tree layout. The interface shows a horizontal tree structure focusing on haplogroup U5a1 and its nested subclades, including U5a1b1, U5a1b1a, and U5a1b1h. Internal nodes are represented by light yellow rectangular boxes labeled with haplogroups or specific variants (such as '★ chrM:15743C>T'). Terminal nodes branch out to individual sample identifiers from the 1000 Genomes project, marked by green dots (e.g., NA20515, HG00285). The top of the page includes a breadcrumb navigation path tracing the phylogenetic lineage back to root nodes, alongside controls for tree depth and orientation.
000
James Kane @jameskane.blog · 16/06/2026
Time to see how this #OrangePi 6 Plus handles minimap2. Initial impression is it's a loud boy with that stock fan.
000
James Kane @jameskane.blog · 15/06/2026
With the end of the Intel Mac era, I picked up a Late 2013 Mac Pro with dual AMD FirePro D700s. It's definitely a 13 year old machine, but still useful and an interesting desk ornament for the retro desk.
A screenshot of the "About This Mac" window. It shows a Mac Pro (Late 2013) running macOS Monterey version 12.7.6. Specifications listed include: Processor 2.7 GHz 12-Core Intel Xeon E5, Memory 64 GB 1866 MHz DDR3, and Graphics AMD FirePro D700 6 GB. The serial number is redacted with a black bar.
010
James Kane @jameskane.blog · 15/06/2026
Multiple data sources tab
A dark-mode application screenshot of "DUNavigator" showing the "Data Sources" tab for subject KANE-001.
Sequencing Runs: Lists multiple genomic sequencing datasets including:
Whole Genome Sequencing via Illumina NovaSeq (615.6M reads, paired-end, sourced from YSEQ).
PacBio HiFi WGS via PacBio Sequel II (1.1M reads, single-end, sourced from Dante), which features a nested alignment bar for chm13v2.0 pbmm2 with 3.6x coverage.
A second Illumina NovaSeq WGS run (651.8M reads, paired-end, sourced from Dante).
Full Genomes Y Elite via Illumina iSeq (62.1M reads, paired-end, sourced from FGC).
Chip / Array Profiles: Displays three collapsed accordion menus for array data: 23andMe (1,407,553 markers, 96.8% call rate), AncestryDNA (701,474 markers, 97.9% call rate), and BiSDNA chromo2 (14,219 markers, 99.9% call rate).
STR Profiles: Displays collapsed menus for short tandem repeat data, listing a Y-111 profile with 102 markers from FTDNA and a Y-12 profile with 16 markers from YSEQ.
000
James Kane @jameskane.blog · 15/06/2026
mtDNA profile using FTDNA's tree at the moment.
A dark-mode application screenshot of "DUNavigator" showing the "mtDNA" analysis tab for subject KANE-001.
mtDNA haplogroup panel: Displays the assigned haplogroup as U5a1b1g, noting "53/55 mutations, score 0.629". It maps out the full phylogenetic lineage tracing back to RSRS.
mtDNA sequences panel: Indicates "No mtDNA sequences yet" with a button to "Import mtDNA FASTA".
mtDNA de-novo SNP calls (chrM) panel: Displays a list of "28 SNP call(s)" with columns for Position, Change, Depth, and AF (Allele Frequency). Visible variants include transitions like 174 A>G (depth 52, AF 1.00), 2620 T>C (depth 83, AF 1.00), and 6451 C>T (depth 109, AF 0.99). A disabled "Publish variants to PDS" button is visible at the bottom of the list.
100
James Kane @jameskane.blog · 15/06/2026
Y-DNA profile using the #ISOGG tree.
A dark-mode application screenshot of "DUNavigator" showing the "Y-DNA" analysis tab for subject KANE-001.
Y haplogroup panel: Displays the assigned haplogroup as R1b1a1b1a1a2c1a3a2a1a2d1b1, supported by 6 runs with a confidence score of 0.52. A "Callable mask" is checked and noted as "self-referential (this sample)".
Y variant profile section: Displays a terminal classification of R1b1a1b1a1a2c1a3a2a1a2d1b1 (2 confirmed, 0 novel, 0 conflict, 0 single-source, confidence 1%). A table below lists specific SNPs (such as L419, M91, and various AS/A series markers) along with their position, ancestral/no-call state, confirmation status, and data sources (WGS or chip).
Private Y (donor union) panel: Displays "400 novel + 33 off-path" variants relative to the terminal R-FGC29071. The accompanying table lists genomic positions, nucleotide changes (e.g., A>G, T>C), sequencing depths (ranging from 8 to 28), and classification categories like "novel" or "off-path" with specific haplogroup branches.
100
James Kane @jameskane.blog · 15/06/2026
Overview screen with sequencing display.
A dark-mode desktop interface of "DUNavigator" showing the "Overview" tab for a male subject, KANE-001.
The top section, "Haplogroup consensus", displays:
Y-DNA: R1b1a1b1a1a2c1a3a2a1a2d1b1 (6 sources, conf 0.519) marked as compatible.
mtDNA: U5a1b1g (6 sources, conf 0.630) marked as compatible.
The middle section, "Coverage", shows global metrics such as a Genome Territory of 3117292070, Mean Coverage of 3.63, Median Coverage of 3, and 1.1% of bases at or above 10x depth.
A "Per-contig coverage" table breaks down stats for chromosomes 1 through 6 (chr1–chr6), showing lengths, read counts, and mean depths ranging from 3.71 to 4.10. A "Depth histogram — whole genome" with red vertical bars is visible at the very bottom.
110
James Kane @jameskane.blog · 15/06/2026
The new Rust-base DecodingUs Navigator is coming along. Haplogroup detection and ancestry analysis working well. Still need to create the chm13v2 versions of a few panels. IBD via encrypted P2P between Navigators in progress. Then tidy up the consensus between multiple tests. #genetic #genealogy
A dark-themed desktop software interface for "DUNavigator: Decoding-Us Navigator".
On the left sidebar, a subject named "KANE-001" is selected, displaying a Y-DNA haplogroup beginning with R1b and an mtDNA haplogroup of U5a1b1g.
The main panel displays the "Ancestry" tab for this subject. A section titled "Donor ancestry (best source)" shows a blue circular graphic and states "European 100.0%" with "19023/20000 SNPs - confidence 96%". Below this, a sub-breakdown lists specific European regions: NW European (Utah) 36.8%, British 23.6%, Tuscan (Italy) 14.2%, Iberian (Spain) 13.1%, and Finnish 12.0%.
The bottom features a PCA (Principal Component Analysis) scatter plot comparing the sample against reference populations, and an error status bar at the very bottom of the window indicating a failed file fetch from a UCSC database URL.
100
James Kane @jameskane.blog · 09/06/2026
Two fixes: surject back to a linear reference + pileup, or vg augment the graph with the reads. Both recovered R1b-FGC29071. Lesson: a genotype-only graph VCF is a genotyper, not a complete variant catalog. jameskane.blog/genomics/202...
jameskane.blog
Finding a Y Haplogroup in a Pangenome (and Why It Almost Didn’t Work)
I tried to read a Y-DNA haplogroup straight out of a personal pangenome alignment. It got me most of the way, then quietly lied to me. Here is what went wrong, why, and the three different ways I even...
010
James Kane @jameskane.blog · 09/06/2026
The catch: a genotype-only pangenome callset can only see variation carried by the assemblies that built the graph. My terminal lineage (R1b-L21 down to FGC29071) wasn't in the panel, so it was invisible. The repetitive Y made it worse with paralog artifacts.
410
James Kane @jameskane.blog · 09/06/2026
I tried to read my Y-DNA haplogroup straight out of a personal pangenome alignment. It confidently placed me in R1b, then steered me to the WRONG sub-branch. New post on what went wrong, and how I got the right answer. 🧬🌳 #bioinformatics #genomics
120
James Kane @jameskane.blog · 27/05/2026
My SpaceMit K3 dev system arrived after some adventures with DHL. Performance is about 3x faster than the K1 on GeekBench 6. Firefly's AIBOX-K3 variant is nicely trimmed. Will run it as is for a bit before reimagine with a different OS.
SpaceMit AIBox-K3 Geekbench 6 Scores:
327 Single-Core, 1594 Multi-Core
000
James Kane @jameskane.blog · 23/05/2026
New blog entry up: jameskane.blog/2026/05/23/v... Embedded Swift, Rust, and C++ have failed me for the last time. Time to write the compiler I want to use.
jameskane.blog
Vestra: a systems language you can hold in your head
An introduction to Vestra, a Swift-flavored systems language whose grammar fits on two pages, and the v0 transpiler that lowers it to C++26.
010
James Kane @jameskane.blog · 22/05/2026
Holy hell. My SpaceMit K3 board shipment was assessed nearly $150 in import fees to clear customs. So tired of "winning." SBC's as a hobby are effectively dead in the current world.
000
James Kane @jameskane.blog · 17/04/2026
Breaking: Trump lies, again.
030
James Kane @jameskane.blog · 17/02/2026
Well... the models are trained on the code from mediocre white men.
010
James Kane @jameskane.blog · 16/02/2026
No shit. Phones are a mature market now. There's nothing to add but incremental specs. This is not a bad thing.
000
James Kane @jameskane.blog · 14/02/2026
Working on a rewrite of bwa-mem2 in #Swift 6 with a Metal acceleration path on Apple Silicon. Using the techniques from "Accelerating BWA-MEM Read Mapping on GPUs". hps://dl.acm.org/doi/10.1145/3577193.3593703 Early benches show 4x faster than bwa-mem2 with NEON patching with 1/3 RAM usage!
000
James Kane @jameskane.blog · 10/02/2026
After no success in finding a complete Swift binding for htslib for another project I've been planning, I had Claude whip one up. The code is reasonable so it's on Github: github.com/JamesKane/sw... Expect changes as I find and fix the clanker's bugs and omissions.
github.com
GitHub - JamesKane/swift-htslib: Swift bindings for HTSLIB
Swift bindings for HTSLIB. Contribute to JamesKane/swift-htslib development by creating an account on GitHub.
000
James Kane @jameskane.blog · 06/02/2026
One of these years I will not take a layoff from running for 2 months after race season, but this was not that year. 45 minutes of absolute destruction on the treadmill in the books.
000
James Kane @jameskane.blog · 05/02/2026
Added a forked version of bwa-mem2 to my GitHub page, which compiles on ARM with NEON. Mostly leveraging sse2neon, but also some optimizations on top. github.com/JamesKane/bw... Timings done with chm13v2.0 as the reference for 2,000,000 150 base pair reads on Apple Silicon.
000
James Kane @jameskane.blog · 21/01/2026
Geekbench 6 suggests it's on par with my 2018-era gaming rig for single and multicore. My M4 mini smacks it around, but the CIX SoC actually has sample drivers I can reference for the OS I'm writing.
000