Coding
I was always fascinated with coding and started learning it at home during elementary school. I used Khan Academy starting out. I was told that coding was the future. This partly fueled my desire to become a software engineer growing up. However, I am thankful that I did not choose that path and instead became an attorney because of the oversaturation of the tech job market as well as the recent launch of ChatGPT and other LLMs.
Now, I use code to improve efficiency at my job. I mostly code using vanilla JavaScript with a simple HTML page or chrome extension. I sometimes use python if there is a more convenient library for it, such as handling pdf files. Here is a list of tools I have made in no particular order:
- RapFaster: An HTML page that locally parses the raw text of a California RAP sheet and provide all the convictions in a summary table. The program automatically extracts the date, code, whether it is a felony/misdemeanor/infraction, case number, sentence, and county. This tool has saved me, and fellow prosecutors in my office, hours upon hours of tedious work.
- Better[Software Name]: a chrome extension that improves the user experience of the default software used by my office. The extension adds a bunch of buttons, highlighting, auto-form filling, auto-clicking, and tons of little improvements to make the user experience faster and more pleasant to use. This tool silently saves me time, makes my interactions with the software more pleasant, and made me more productive.
- Bluesheet Mode: a chrome extension that adds four buttons that specifically optimizes making filing decisions on criminal cases. The buttons are "File", "CFF" (Case File and Further), "Reject", "Reject Further". Each button corresponds to an action that an attorney will take after reviewing the case file. "Further" means there needs to be further information, investigation, or evidence given to us by the police. In my opinion, these buttons should have been there from the start. Each button condenses about 10 unnecessary auto-clicks and auto-form-fills into a single click. The primary function of the buttons is to automatically generate the documents I need. Since the documents were .rtf files that got downloaded on to my computer, I was able to use my chrome extension to intercept the download of the files, and inject text into the document automatically before I even open it up to make my edits. This tool significantly increased my productivity for making filing decisions.
- [Software Name] Templates: a chrome extension that adds a button to a case that allows me to generate boilerplate templates. The extension scrapes the necessary information, such as case name, case number, date of next hearing, department, witness information, and and fills in template fields in a pregenerated .rtf template file that I made. All attorneys did this manually by hand but I created a tool that allowed me to do this automatically. I used this primarily for generating blank motions with the case name, case number, date of next hearing, etc. replaced. The original template feature in the software could only be controlled by admin users, and templates were globally shared throughout the entire office, so no one could have personal templates. I still wanted my own templates so I made this tool.
- PDF Highlighter: A python program that does bulk highlighting on keywords. For example, if I want to highlight the word "knife" every time it shows up in a police report, the only option is to manually highlight each occurrence. My office did not have the version of Adobe Acrobat that had this feature, and I am prohibited from uploading such confidential documents to online tools. My only option was to create a python program that did this for me. This was specially useful when I had to read a lengthy police report that contained information on seven companies and seven owners of each company who were the subject of the investigation. All the companies had similar names, which added to the confusion. Using this tool, I highlighted each company and their corresponding owner one of seven different colors which helped me to distinguish between the numerous parties at a glance.
- PDF Extract: A python program that uses a local copy of pytesseract to perform OCR (optical character recognition) on any pdf file. I needed a tool like this for RapFaster and just in general for when I want to copy text from a pdf file. I could have just used Adobe Acrobat, but to do OCR requires approximately four clicks and you had to wait between clicks for the next button to load. Acrobat also took forever to complete the OCR and you could not read the pdf while the OCR was being performed. Also, Acrobat would sometimes crash when you OCR a large pdf with 100 pages or more. Basically, Acrobat was terrible. I wanted something that can perform the OCR in the background, did it quickly, reliably, and did not require so much clicking and waiting. With my python program, I can just click and drag a pdf file into the gui window and wait for it to finish the OCR. It handles large pdfs easily. I also think it is more accurate than Acrobat.
- Ephemeris: a calendar app made with HTML and JavaScript that helped me keep track of my cases and court appearances. I wanted to programmatically sort, filter, search through my cases so I created a calendar app that tracked all my cases. I used to use Excel, but I had issues with it. My program stored all data in local storage, and I would routinely export the data into a json file so I can recover it in case something happens. I did not want to create a back end or use a server because of confidentiality concerns. "Ephemeris" is a journal that tracks the movement of the stars.