Home / Ideas edit
Try Documentalist, my app that offers fast, offline access to 190+ programmer API docs.

Bigger ideas
  • PDF related
    • PDF DRM / Protector / Encryptor
      A web service where peopel can upload a PDF and get a reader application for Windows that protects the PDF from being copied.
      It would cost between $10-$100 to protect a single PDF, unlimited distribution.
      Build the reader using pdfium, 32-bit only, maybe using WinForms for the viewer app.
      Sequence of events:
      • compile pdfium library
      • write the simplest reader that uses external encrypted PDF file
      • write website that encrypts uploaded PDF file
    • faster PDF rendering
      For faster PDF rendering, re-compile it. PDF format is rather complicated, mostly text format. A PDF renderer first has to parse it into in-memory representation and then renders it.
      Imagine a binary format that is designed for fast loading and one-time PDF => binary format compilation step. With the right format, parsing step could essentially be eliminated.
      We could even improve rendering time with some additional optimizations.
      For example, there are PDF documents with gigantic images (think 4000 x 4000 pixels) that could be resized to some reasonable value and saved in a format that is fastest to decode.
      I’m sure there are optimizations possible for complex vector graphics (e.g. removing stuff that we know will be invisible).
    • website for comparing poppler vs. mupdf vs. pdfium vs. pdf.js rendering
      A website that allows comparing of poppler vs. mupdf vs. pdfium vs pdf.js rendering. Upload a PDF, render each page in each engine in both native size and down-scaled to a reasonably sized thumbnail for overview. The baisc layout would be:
      [page 1 mupdf] [page 1 pdfium] [page 1 poppler][page 2 mupdf] [page 2 pdfium] [page 2 poppler] …
      Then one could click on the thumbnail to see comparison of the native size.
      Bonus feature: some type of overlay comparison.
    • website / tool to extract text from PDF
      Write a tool to extract text from PDF files.
      Upload the file and get text in plain text file and json (augmented with position information) and maybe even xml.
      Limit size of PDF files. Upsell to $19 mac/windows. Write a command-line tool, maybe even open-sources, also upsell GUI version.
      Good example of upselling to a better version: https://www.spyfu.com
    • pdf printer exe
      Cmd-line tool for windows, based on Pdfium. Many people use Sumatra for PDF printing but printing is not great there.
      Pdfium should print well. Ship as a single executable which extract pdfium.dll on demand.
      Make it free for personal use. Make it $99 for commercial use.
  • SEO / analytics related
    • linkchecker / seo checker
      Write free (and maybe open-sourced) cmd-line utility for windows/mac. Write GUI front-end for mac/windows and charge $29 for it. Cmd-line app is an advertisement for gui app.
      Write web-based UI with limited functionality (number of pages crawled). Use it as advertisement for gui app.
      Potentially have pro plan for web version which has no limits, allows running checks every day/week and e-mail if there are problems.
      Can expand into web archiving utility.
    • google analytics summary
      A service that sends daily/weekly google analytics summary, where it shows only the most important information.
    • web service to build a sitemap
      Build a web service that builds google sitemaps (https://support.google.com/webmasters/answer/183668?hl=en&ref_topic=4581190). It crawls the website and builds .xml or .txt file with links, describes how to submit it to google etc. It should use chrome headless.
      It should aggressively cache the results to avoid re-crawling websites. Url should be /tools/build-submit-google-sitemap.html. Maybe use a domain like webtools.io/build-submit-google-sitemap.html
      To make money limit web service to N links (100? 256?) and up-sell a $10-$30 windows/mac desktop app build on electron.
      Basically, https://www.xml-sitemaps.com but better.

Make a Windows app like https://numi.app/ and sell for $19

Write web-based version of https://github.com/sebastianbiallas/ht
Write either in JavaScript (or TypeScript) and maybe desktop version using embedded browser.
Or write in Dart / Flutter and make web version / desktop version. Maybe web version as free advertising, sell desktop version for $99.

Replicate product / business model of https://unidoc.io/pricing/ in Dart (because Flutter will make Dart popular)

In codeeval.dev, add a way to do scratch calculations, using frink-like language https://www.hillelwayne.com/post/frink/

write jpeg inspector on the web https://github.com/corkami/formats/blob/master/image/jpeg.md

port https://github.com/ImpulseAdventure/JPEGsnoop (windows app) to web

port https://withfig.com/ to Windows

Implement https://www.hopperapp.com/ (disassembler) as a web app

Port https://www.digitalocean.com/community/books/how-to-code-in-go-ebook to use codeeval.dev for built-in code samples.

port bookish markdown parser from java to go
It uses antlr for the grammar so should be easy

Port https://github.com/dolanmiu/docx to Dart

Port "Calculus Made Easy" (from 1914) to Notion and publish as a website / epub / PDF. https://news.ycombinator.com/item?id=23257303

Website like https://scrimba.com/ but for all languages (like Go, Dart, TypeScript etc.).

Universal file upload service. Many service I have in mind need a way to upload a file and store for later retrieval in online storage.
It also needs to be optimized so that it doesn't re-upload files (based on sha1 of the content).

Web UI for https://github.com/bradfitz/shotizam (shows the sizes of things inside Go program)

Implement menu like in https://hundredrabbits.github.io/Ronin/ in Svelte and use is some project.

Something like https://github.com/inancgumus/learngo but using codeeval.dev

Rewrite "Let's build a compiler" in Go and publish as a book, with code examples on codeeval.dev. Resources:

Recreate https://github.com/Alorel/patheditor2-mirror using my GUI framework in Sumatra

Port Enso https://github.com/GChristensen/enso-portable from Python to C / JavaScript (using QuickJS)

Write a Go equivalent of "Java Web Scraping Handbook" (https://twitter.com/SahinKevin/status/1216343661459451906).
Implement all the good ideas from https://news.ycombinator.com/item?id=22026089

A web version of https://www.ghisler.com/, call it Twilight Commander (a-la Midnight Commander)

Web-based htop with direct links to explanations of displayed information, like in https://peteris.rocks/blog/htop/

Make a production / polished version of https://github.com/google/grr
Write the client in Go and front-end in html.

Port https://github.com/getoutofmyyard/igloo to QuickJS and add UI.

Port libvips bindings from https://github.com/imgproxy/imgproxy to quickjs and Dart FFI to see how they compare.
Might end up with an article or two.

Build web versions of bintools (where it makes sense): https://opensource.com/article/19/10/gnu-binutils

A web and/or Chrome Extension version of https://github.com/sarthology/caligator

Port https://github.com/zodiacon/ProcMonX from C# to either Go / WebUI or quickjs.

A chrome extension to record http requests and pretty-print JSON responses.
There are a view but they all seem to just spy on headers.
Call it HTTP Mata Hari

Hosted https://visidata.org/ : allow people to drop a file, run a session on the server, show it via xterm.js ui

This UI could be used for apps that present data as a stream of data that can be modified, where each modification creates a new stream, that can be inspected.
For example, a file manager-like utility:
dir "." norecur : returns a stream of files and directories, The schema is: name, type (dir or file), size, path (full path), relpath (path relative to staring dir), permissions, ext etc. norecur is optional and disables recursive listing
size > 1 mb : creates a new stream with only items that fullfulls this predicate
ext.lower == ".png" : creates a new stream where ext property is equal to .png. lower calls lower() JavaScript function.
sort relpath, -size : sorts by name and then reverse size (biggest first)
type == file : removes non-file entries
wc : adds wc.bytes, wc.words and wc.lines properties
select relpath, wc.lines : limits display to only relative path and wc.lines properties
Properties can be chained:
dir "." norecur; size > 1 mb; ext.lower == ".png"; sort relpath, -size; type == file; wc; select relpath, wc.lines

Improve on https://github.com/vjeux/soulver.js (maybe use lezer for the parser, fix bugs, add more features). Some inspiration: https://news.ycombinator.com/item?id=20403270, https://github.com/gabipurcaru/dedo

Implement a grammar with https://lezer.codemirror.net/. Maybe Go.

You can drop a file and we can show which parts of the file belong to a given structure.

File manager inspired by ranger https://github.com/ranger/ranger but made with web technologies. Can be desktop app or web-based.

Web version of https://github.com/gcla/termshark (a terminal ui for wireshark / pcap files, written in Go)

Make https://cloudcmd.io/ a hosted thing. Add more on-line serves, ability to add local drive via Go agent running on the computer.

Make nvAlt-like app on the web. See https://github.com/wincent/corpus (which is Electron-based local app)

Use https://zzz.dog/ to generate app icons. Instead of designing an app icon in vector program, write a JavaScript program that renders to canvas and save the canvas to .png.
This makes it easy to design icons that are made of simple, geometrical building blocs.

Improve on https://codepan.net. It's almost perfect but could use a few improvements:
  • add a /dashboard link which lists pens (local stored in browser and those stored in a gist). This is accessible via Home link at the top
  • improve how gists are stored (currently it's just a single json file; make it multiple files for each type)
  • rewrite in svelte (just for my education)
  • could remodel a bit so that github username and save button are lined with top
  • could then use that as a basis for anotepad site and code eval

Port as much of https://github.com/d2phap/ImageGlass to Go as possible to ensure coverage of Windows APIs.

Make a windows gui app that wraps cv2pdb. Re-use most of fast file finder. https://github.com/rainers/cv2pdb
Then write an article how to debug Go apps on Windows

Port https://processhacker.sourceforge.io/ to Go / walk. This is to make sure the w package is capable enough to do it.

Port one of the React libs to Svelte e.g. https://baseweb.design/

Windows UI for https://github.com/gcla/termshark (a terminal UI emulating wireshark, written in go).

Port the PE parsing logic to JavaScript and make it a web app.
Alternatively make the core operate on the server, return JSON and have the web UI use that to display information.

Write Windows equivalent of https://www.holdr.app/

https://astexplorer.net/ for Go. Could build a service that returns AST for Go program in JSON and gives it to astexplorer. Their other parsers always use JavaScript implementation of a parser.

Port https://gethead.info/ to use cheat-sheet navigation scheme

Port https://30secondsofcode.org/index and https://30-seconds.github.io/30-seconds-of-css/ to use the same navigation scheme as python cheat-sheet

Use either chakra (and only support Win 10) or one of the small JS engines (mujs, duktape).
Generate the bindings using winapigen.
Could also make it into more generic visualization tool for misc system resources like processes. A quick way to make system utilities.

This is an idea for a better code browsing tool.
Have you ever flip flopped between multiple files when trying to understand a large code base?
I did, many types. Even the most advanced code browsing tools, like SourceGraph, are very frustrating when trying to understand code. The issue is this: we're not trying to understand 100 thousand lines of code at once, because that's not humanly possible. We browse the code to understand a tiny portion of a large code base but the tools are not made for that. We can do full text search, maybe with semantic understanding but when the parts of the code needed to understand a given concept spans several files, we must jump between files and loose context.
The idea is rather simple: augment standard search capabilities with a scratch buffer and add ability to quickly add parts of the code that are interesting (either by one-click add of a function / type etc. or select the code and add).
This scratch buffer allows to gather all relevant code in one place.

Write a previewer for testing notion api requests by using cors proxy cors.io and others. Simple front-end where user can pick which API to call, provide arguments and see JSON result. Inspiration:

Write a tool for visualizing Go binary size. Could be web based on windows / mac app. Or all of them and use web based version to let people try the app but for heavy use direct them to $29-$39 windows / mac app.
Should also have an option to produce a linear list (or a tree view) or maybe flamegraph

From soundcloud, nice design for showing keyboard shortcuts. Useful e.g. for comic book reader.

Better godoc. Use https://github.com/Unknwon/gowalker bettergodoc, bgodoc

Add sorting for tables. Use e.g https://neil.fraser.name/software/tablesort/

mini: write the simplest comic book reader on the web. Use https://github.com/codedread/kthoom and https://github.com/workhorsy/comic_book_reader as a base. combine with pdfvuer for PDF viewing

mini: improve the article comparing comic book readers on my website https://windowsreport.com/comic-viewer-software/

For sumatra online: https://github.com/arkokoley/pdfvuer A good starting point for view UI. It's based on pdf.js.
Ideas for improvements:
  • navigation controls should be both at the top and bottom
  • navigation controls should stay hidden but show up when the mouse is over them or when scrolling or when the mouse is moving (need to experiment to find out the right balance of when to show / not show)
  • maybe a mini-status that shows e.g. current page number, always visible. They key is that it's small.
  • full-screen option
  • obviously needs more features (go to page, different kinds of layouts etc. Everything that Sumatra has
  • more formats

mini: command-line sql query with all the nice ui of numeracy https://www.snowflake.com/blog/numeracy-investing-in-our-query-ui/

Nice design for showing binary structures or in sql essential book. From https://numeracy.co (now dead)
Other ideas:
  • maybe no need for select, if we have foo, bar and foo and bar are properties, then it knows it's select
  • make quries live i.e. if source changes, the pipeline gets recomputed (e.g. when source is ps
Other possible tools like wc:
  • ps : lists processes
  • windows : list of OS windows
  • allow calling functions e.g. isPE path where isPE is a JavaScript function that takes a path to a file and determines if the file is PE executable and returns a bool If a function returns bool, it's a filter. If it returns an object, it's additional, nested properties. E.g. image path returns dict with information of about an image (or empty if no information) and e.g. image.dx is width of the image etc.
  • various sys-admin-like tools like list of open tcp/ip connections, list of files opened by a given process etc.
  • gui version of https://www.atoptool.nl/index.php
    Use web as a front-end. Mac and Windows native apps. Backend in Go. Mac uses thin Cocoa wrapper around webview. On Windows a C# thin wrapper around cef or C++ thin wrapper around the new project from awesomium. A remote agent is copied to a linux server and the UI talks to it using some simple protocol.
  • desktop remote log viewer
    Like saw (https://github.com/TylerBrock/saw) but as a desktop app.
    Allows to connect to various, local and remote sources of logs and stream them locally. Add a fast search, multiple tabs, combining multiple log sources into one stream.
    Can stream any logs on remote ssh servers and whatever online services expose logs.
    Crucial for success:
  • Remote IDE
    Local application where one can get browse-based shell/ide to a remote serve. Like nitrous.io or c9.io but as a local app which allows running on your own server. Works by deploying a Go agent via ssh to the server, agent talking back to local app or to the server.
  • Coderunner on the web
    Llike http://itunes.apple.com/us/app/coderunner/id433335799?mt=12 except on the web, Go on the backend, add social features.
    Make it somewhat like StackOverflow i.e. people can tag a given code snippet with "Question" when it doesn't work or it doesn't behave the way they think it should. We would have a separate section on the website showing questions and basically replicate StackOverflow functionality (adding answers, accepting, uprooting etc.)
    Add "critique my code" section where people can post working code and ask other people to improve. Other people could submit improvements, they could be upvoted, viewed as diffs, people would earn badges etc.
  • https://gdbgui.com/ hosted
    Needs to be downloaded and run locally. Write a Go program that talks to a server. Maybe charge.
  • web version of gotop
    the simplest program that launches gotop remotely via ssh and shows the output in xterm.js hosted inside a web browser
    Start with remotetop (rtop ?) that simply copies gotop over ssh to a remote server and launches it
    Then provide web version that does the same but acts as a web server and shows in locally installed web server.
    Then a version that uses lorca to launch in chrome.
    Then native mac app that uses embedded web view.
    Then native windows version that uses cef (or maybe electron).
  • wmi explorer for windows
    https://www.sapien.com/software/wmiexplorer sells for $49 and has shitty UI. Write better UI in Go. For SEO build a website that has better UI than msdn and lists the same information (scraped). Also promote from my fork of wmi library for Go.
  • auto hot key alternative that uses javascript
    Instead of custom language, use chakra javascript engine
  • desktop version of https://github.com/jlfwong/speedscope
    It's a tool for viewing sampling profiles, in the browser. Make it a Go backend/native app with embedded browser control for the frontend.
  • javascript-based shell helper
    A better way to do common things in shell e.g.
    > se `dir(.).where(globMatch(name, "*.Token.java")).sortBy(size).select(path)`
    se is the name for the program (Shell Executor)
    The breakdown is:
    • dir(path) is a stream of files with their attributes
    • where(cond) is a filter that rejects items that don't match condition
    • globMatch(attribute, match) returns true if attribute of the item matches match per glob algorithm (simple file name matching). we can also provide rxMatch() (or maybe for short just glob and rx)
    • sortBy(attribute) sorts by an attribute
    • select(attribute, ...attribute, ... attribute) selects only given attributes from the item
    The big idea is that commands operate on arrays of items (attribute / value pairs) and the commands either transform the array (remove/rearrange/add) or the items (remove attributes.
    It can be expressed quite well as plain JavaScript. We could make it a bit better with a custom parser (e.g. no need to quote attribute names as strings i.e. can write dir(.) instead of dir(".")
    Add other sources of data, like netstat-like information about network connection
    Alternative names:
    • jst (JavaScript Shell Toolkit)
    • sse Scriptable System Explorer
    Could also make it a GUI app that would allow showing the results in GUI. The same scripts could show the results in a window.

Feedback about page:

Optional: your email if you want me to get back to you:

Share on        

Need fast, offline access to 190+ programmer API docs? Try my app Documentalist for Windows