Insights
Research, analysis, and perspectives from Bommarito Consulting on AI, governance, privacy, and computational modeling.
Research & Guides
Start with our visual guides to Michigan utilities, power lines, permitting, and data-center siting.
Browse the guides →
Checking the Case for BAAJA
Seventeen common claims made by supporters of the Senate permitting bill (BAAJA, S. 5653), each checked against the 417-page text with page and line citations: what they get right, what they leave out, and what they overstate.
Michigan Pipelines: Natural Gas, Petroleum, and Line 5
How Act 9 and Act 16 divide pipeline siting, how safety oversight works, and what the July 2026 Line 5 ruling requires. Includes original documents, a detailed report, and two videos.
Michigan Solar, Wind, and Battery Siting
A visual guide to PA 233: size thresholds, the local and state processes, setbacks, project commitments, and the May 2026 court ruling. Includes a detailed report and two videos.
The Michigan Public Service Commission: People, Powers, and Process
From railroad regulation to today’s three-member Commission: its history, current commissioners, appointments, political structure, utility decisions, and public participation. Includes a detailed report and two videos.
Michigan Act 30 and the MPSC
Who chooses a transmission route, who pays for a large load, and how residents can participate. A visual guide to Act 30 and the MPSC's broader work, with a detailed report, two videos, case explorer, and primary sources.
HB 5940: Power Lines Along Michigan's Highways
Michigan House Bill 5940 would end the rule that power lines along limited access highways must be buried, but four public bodies still have to act before any overhead line goes up, with no deadline for any of them and no new say for neighbors or townships. The change word for word, the path from law to line, a county table, the Senate package, and what township boards, county officials, and property owners in communities such as Williamstown and Locke can do before the MPSC's October 21, 2026 comment deadline.
BAAJA, Line by Line
A 132-page, section-by-section reading of the Bipartisan American Affordability and Jobs Act of 2026 (BAAJA, S. 5653): what the Senate permitting bill actually says, what it changes in federal law, and who wins and loses, cited to page and line — with a tested answer to whether it is a data-center bill. Full report PDF and companion videos.
The 2026 Senate Permitting Bill
An independent analysis of the September 30, 2026 Senate permitting deal: expanded federal power to approve power lines and take land, narrower court challenges, data center costs left to utility estimates, and no emissions limit — with Michigan worked examples and how the bill reaches other states. Full 40-page report available for download.
The Oracle Tax Abatement Application in Saline Township
An independent evidence review of Oracle's $43.1 billion tax abatement application under Michigan Public Act 198: the statutory six-month commencement rule, the county's own permit record, the consent judgment, principal findings, and recommended actions — revised July 18, 2026 after the Township Board's July 14 and July 17 votes, with the full 46-page report available for download.
The Proposed ITC Oneida–Sabine Lake 345 kV Transmission Line
An independent, reproducible route and environmental analysis of ITC's seven published alternatives for the Oneida–Sabine Lake 345 kV line in central Michigan — scored on the Act 30 factors with and without House Bill 5940's freeway credit, stress-tested across a million weightings, and resolved township by township. Revised September 2026; full 41-page report and explainer video.
Independent Traffic & Siting Analysis of the Proposed Chicago Bears Stadium
A public-data traffic analysis of the proposed Bears stadium at Arlington Park: roughly 32,000 game-day vehicle trips, 112 local-street bottlenecks that persist in every mode-share scenario, the Metra surge-service gap, and equity concentration on the impact corridors — with five adoptable recommendations. Full 55-page report available for download.
EU AI Code of Practice Draft: What Boards Should Know
An analysis of the EU AI Office's draft General-Purpose AI Code of Practice, highlighting systemic risk oversight, documentation requirements, incident response, and board-level compliance considerations.
AI Lifecycle and the Board's Role
A primer for board directors on the AI lifecycle — data collection, training, and deployment — and the strategic considerations boards must understand for effective AI oversight.
AI Oversight: 5 Key Sources of Board Requirements
A framework identifying the five key sources of AI governance requirements for boards — legal mandates, risk frameworks, insurance, internal policies, and customer preferences.
Risk Management for AI: A Board Director's Guide
A comprehensive guide for board directors on leading AI risk management through six key elements: establishing context, risk assessment, risk treatment, recording, communication, and continuous monitoring.
The KL3M Data Project: Building Copyright-Clean Training Data at Scale
Inside the KL3M Data Project — assembling 132M+ copyright-clean documents to enable responsible LLM training and earning the first 'Fairly Trained' certification.
How Data Provenance Drives Machine Learning Risk and Value
An exploration of data provenance — the origin and history of data — and why it is a board-level concern for AI risk management, legal compliance, and responsible governance.
Pioneering Responsible Data Science: A Framework for Ethical Innovation
Introducing an open-source Responsible Data Science Policy Framework designed to help organizations address ethical AI governance through a modular, adaptable approach.
Since Our Last Episode: The Evolution of Bommarito Consulting
A retrospective on the firm's journey from early-stage consulting through the LexPredict era, and the pivot toward AI governance, privacy, and institutional advisory.
Built to Sell: Lessons from the LexPredict Journey
Key takeaways from building, scaling, and successfully exiting LexPredict — an AI-powered legal technology company acquired in 2018.
Predicting the Supreme Court: AI Meets Legal Outcomes
How our machine learning research achieved breakthrough results in predicting Supreme Court decisions, and what it means for the future of legal AI.
Course Material for Complex Systems 530 — Computer Modeling for Complex Systems
Open course material for Complex Systems 530 at the University of Michigan, covering agent-based, Monte Carlo, and network modeling in Python.
Predicting the Behavior of the Supreme Court of the United States: A General Approach
Introducing our Supreme Court prediction project using extremely randomized trees to forecast over sixty years of decisions and individual justice votes.
Featured in Wired: Measuring the Complexity of the Law
Sam Arbesman featured our paper on measuring legal complexity of the United States Code on his Wired Science blog, the Social Dimension.
Is the Tax Code the Longest Title?
An analysis of whether the Internal Revenue Code (Title 26) is actually the longest Title in the U.S. Code, using data from our paper on measuring legal complexity.
Measuring the Complexity of the Law: The U.S. Code
Releasing our empirical framework for measuring legal complexity, applied to the U.S. Code, with full replication source and data on GitHub.
Summary of Community Detection Algorithms in igraph 0.6
A reference guide to the community detection algorithms available in igraph 0.6, including their runtime complexity, and support for directed and weighted edges.
Building an AWS CloudSearch Domain for the Supreme Court
A step-by-step tutorial for building a fully searchable AWS CloudSearch domain using public domain U.S. Supreme Court decisions, covering data acquisition, domain configuration, indexing, and querying.
Statistics on the Length and Linguistic Complexity of Bills
An introduction to an automated daily analysis of 112th Congress bills, providing statistics on section count, word count, unique words, and Flesch-Kincaid reading level for every bill.
Building Legal Language Explorer: Interactivity and Drill-Down, noSQL and SQL
A technical deep-dive into the architecture of the Legal Language Explorer, a Google Ngrams-style viewer for the U.S. Supreme Court corpus, combining redis (noSQL) for fast time series queries with PostgreSQL for case-level drill-down.
21st Century Legal Informatics: Part 1, Introduction
An introduction to three paradigms of legal informatics — 20th century computers-as-libraries, 22nd century computers-as-lawyers, and the practical 21st century middle ground.
Historical Data Mining the Supreme Court Headnotes
A demonstration of historical data mining techniques using editorially-assigned legal headnotes from U.S. Supreme Court cases, examining co-occurrence and citation networks to trace the evolution of legal concepts like criminal suspect rights.
Two New Papers on SSRN: Measuring EU Integration Through Sovereign Debt & Exploring Relationships Between Headnotes in the Supreme Court
Announcing two working papers released on SSRN: one measuring European integration through sovereign bond yield correlations from 1872 to 2010, and another exploring the network structure of legal concepts in Supreme Court headnotes.
Now in Print: An Empirical Survey of the Population of U.S. Tax Court Written Decisions
Announcing the publication of an empirical analysis of U.S. Tax Court citation practices from 1990 to 2008 in the Virginia Tax Review, examining Internal Revenue Code citation frequency and the impact of tax legislation on court decisions.
Building a Better Legal Search Engine, Part 1: Searching the U.S. Code
An introduction to indexing and searching the U.S. Code using Apache Lucene, structured public domain data, and open source software.
Archive
Technical tutorials and programming posts from the early years of the firm.
Advanced Approximate Sentence Matching in Python
Advanced techniques for approximate sentence matching in Python using Jaccard similarity on token, stem, and noun lemma sets after stopword removal.
Fuzzy Match Sentences in Python
A tutorial on fuzzy matching sentences in Python using NLTK, covering tokenization, stopword removal, stemming, and lemmatization approaches.
Isotonic Regressions in scikit-learn
A practical example and discussion of isotonic regression in Python's scikit-learn, including contributions to improve the IsotonicRegression class.
Is There Tax in the Cloud?
A discussion of the U.S. tax implications of cloud computing transactions, highlighting Orly Mazur's SSRN paper on the challenges that IaaS, PaaS, and SaaS create for federal income tax principles.
Benchmarking the new AWS Postgres RDS instances
Postgres has finally come to RDS (http://aws.amazon.com/rds/postgresql/)!
AWS EC2 hs1.8xlarge Oracle ORION benchmark results
Benchmarking I/O with Oracle ORION (http://docs.oracle.com/cd/E11882_01/server.112/e16638/iodesign.htm#PFGRF95222) is an important part of planning, baselining, and performance-tuning Oracle environments.
ipython notebook for R: Quickstart for Ubuntu
If you're like me, you love ipython notebook (http://ipython.org/notebook.html) but often write R.
Plotting average read and write operation size by ASM disk for Oracle
Throughput, throughput, throughput - for many databases, this is the performance measure of importance.
Law's Future from Finance's Past: Recorded Talk from Reinvent Law Silicon Valley
The recorded video of Michael Bommarito's talk at the Reinvent Law Silicon Valley event, drawing parallels between the evolution of finance and the future trajectory of the legal industry.
Connecting R to an Oracle Database with RJDBC
A step-by-step guide to connecting R to an Oracle database using RJDBC, a cross-platform JDBC-based approach.
Retrieving the VIX term structure in R
Much of my time lately has gone into analyzing and trading products in the volatility complex.
Natural Language Processing and Machine Learning for e-Discovery - Slides from guest lecture at MSU College of Law
Fellow Computational Legal Studies (http://computationallegalstudies.com/) blogger and MSU law prof Dan Katz (http://www.law.msu.edu/faculty_staff/profile.php?prof=780) invited me to give an expert guest lecture for…
Debugging parameter mismatch across RAC database instances with R, dba_hist, and gv$parameter
Much of this morning went into investigating strange ADDM reports on a two-node Oracle RAC database.
Wordcloud of the Arizona et al. v. United States opinion
Here's one purely for fun - a wordcloud built from the Supreme Court's opinion on Arizona et al.
Building Python pandas from development source
I first heard about Python pandas (http://pandas.pydata.org/) from a friend at RenTech or AQR in the early summer of last year.
OTM in the Cloud: Hosting Architectures, Part 2 - 1+RDS
In our last post on cloud architectures, I covered a simple one-node Oracle Transportation Management instance on Amazon Web Services using EC2…
Oracle Transportation Management (OTM) in the Cloud: Hosting Architectures, Part I - Single Node
As I mentioned on Monday (http://michaelbommarito.com/2012/05/21/upcoming-series-oracle-transportation-management-otm-in-the-cloud/), I'll be starting a series of posts on Oracle Transportation Management (OTM) in…
Visualizing the #nonato Twitter hashtag - time series and top users
The NATO summit (http://www.nato.int/docu/review/index_EN.htm) is currently being held in Chicago, and, as is typical for NATO or G# summits, the streets and tweets are full of dissent.
eDiscovery Consulting in the Cloud: Searching an Outlook Mailbox and Attachments
A real-world case study demonstrating how to make Outlook PST mailboxes and their attachments searchable using AWS CloudSearch, processing 1.3GB of Enron email data on a laptop in under an hour.
Down with the static
After six years of static HTML, it finally became apparent that this site needed a real CMS.
“Google” for Subpoenaed Emails: AWS CloudSearch for eDiscovery
A practical look at using AWS CloudSearch to build a scalable, on-demand search engine for subpoenaed email in eDiscovery engagements, eliminating the need for large capital expenditures on servers and storage.
Generating AWS CloudSearch SDF for Emails
In my last post on CloudSearch and eDiscovery (http://www.michaelbommarito.com/blog/2012/04/21/google-for-subpoenaed-emails-aws-cloudsearch-for-ediscovery/), I described something like "Google" for eDiscovery emails.
Visualization of Reading Level Frequency by Congressional Bill Stage
Here's a fun example of how you might use my data on Congressional bill length and complexity (http://www.michaelbommarito.com/blog/2012/04/14/updates-to-data-and-statistics-on-congressional-bill-complexity/).
Visual Summary of #jan25 Twitter Activity
Last year, I covered a number of the so-called "Twitter protests" in China (#cn220 (http://www.michaelbommarito.com/blog/2011/02/20/dataset-tweets-from-the-chinese-protests-cn220/)), Iran (#25bahman…
Debugging ORA-02292: integrity constraint (OWNER.CONSTRAINT) violated - child record found
Working with Oracle databases (http://www.oracle.com/us/products/database/index.html) can be daunting to developers and analysts who lack a deep understanding of relational models and SQL.
Saving Memory in Redis and Python with struct.pack
Using Python's struct.pack to convert numbers from string to binary representation in Redis, achieving significant memory savings.
Blogging for myself, not you.
In between writing the wrong year on documents, I've been reflecting on this blog.
Single HTML File of the Michigan Compiled Law (MCL)
Last night, I posted a copy of the Michigan Compiled Law (MCL) as an improved and structured XML document.
XML Copy of the Michigan Compiled Law (MCL)
A few weeks ago, Ari Hershowitz (http://blog.tabulaw.com/) posted on Quroa calling for a Californa code hackathon (http://www.quora.com/Ari-Hershowitz/Hackathon-Anyone-Recode-Californias-Laws).
Building igraph's Python bindings with plotting support on Ubuntu
igraph (http://igraph.sourceforge.net/) is my preferred library for graph manipulation.
Deaths per TWh (terawatt-hour) by Energy Type
The chart says it all, with nuclear winning by two orders of magnitude (via ManyEyes (http://www-958.ibm.com/software/data/cognos/manyeyes/visualizations/2e5d4dcc4fb511e0ae0c000255111976/)).
Christoph Gohlke's Windows Python Packages
Last night, I spent a few hours configuring a new OCZ Vertex 2 (http://www.ocztechnology.com/ocz-agility-2-sata-ii-2-5-ssd.html) on my M4500 (http://www.dell.com/us/business/p/precision-m4500/pd), my primary workstation.
Tracking the Frequency of Twitter Hashtags with R
An R script for downloading and plotting the frequency of Twitter hashtags over time using ggplot2.
Plotting 3D Graphs with Python, igraph, and Cairo
A demonstration of how to generate 3D network animations using Python, igraph, and Cairo, applied to a Twitter user graph.
OCR'd Exhibit A - List of Closing Stores from Borders Chapter 11 Filing
Here's an OCR'd version of the list of Borders stores that are closing.
Pre-processing text: R/tm vs. python/NLTK
Let's say that you want to take a set of documents and apply a computational linguistic technique.
Dataset: 5 Days of #25bahman
What do 88,831 tweets about protest and revolution in Iran look like?
Plotting a Revolution: Time Series Comparison of #feb12 vs. #fev12
I wondered yesterday whether one of the Algeria/Yemen hashtags would dominate (http://www.michaelbommarito.com/blog/2011/02/13/twitter-hashtag-battle-royale-febfev12-vs-12febfev/).
Twitter Hashtag Battle Royale - #(feb|fev)12 vs. #12(feb|fev)
Algeria and Yemen seem to be pushing a #feb12 (http://twitter.com/#!/search/%23feb12) revolution hashtag like Egypt's #jan25 (http://twitter.com/#!/search/%23jan25) tag.
Insights by email
Get new insights by email
One email when we publish something new, and nothing when we don't. No tracking pixels, and leaving takes one click.
Working on something like this? Talk to us →