There are no reviews yet. Be the first to send feedback to the community and the maintainers!
################################################################################ # # NOTICE: unmaintained! As of 2015-05-03 I no longer use this App Engine-based # version of Scanning Cabinet. # # The migration of my App Engine instance from Master/Slave datastore to HRD # failed, so I'm accelerating plans to move this project to be Camlistore-based # instead. See camlistore.org. This will just be a Camlistore app, using its # data model. # # Old README follows. # ################################################################################ This is scanningcabinet. It's my document management system. Maybe you'll like it too. Problem statement: * I'm a packrat. Yes, I might need my T-Mobile cellphone bill from March 2001 sometime. Maybe. (shutup) * My filing cabinets are full. * It's cold in San Francisco and I want to burn stuff. * I can't find tax or insurance documents when I need to anyway, because folders suck. I want tags. e.g. I can tag that one document "audi, insurance, crash, car, state farm, royal motors" and be sure I'll find it later. Which frickin' folder would I put that in anyway? Folders sucks. Yay tags. * I have a scanner. My friend's scanner is better. Borrowed that one. It has a sheet feeder. * App Engine now has a Blob API: http://bit.ly/8K4FxM * It should be easy to get documents online. Must minimize context switching between feeding the scanner and entering metadata. In fact, they should be *entirely separate* tasks. If I have to enter metadata while scanning, I'll probably just end up on reddit. * All document metadata entry should be done later. This includes clumping multi-page scans into their logical documents. I shouldn't have to even enter how many pages a document is when I scan it. I'll be scanning stacks in the auto-document-feeder anyway. * Usually I want to just burn/shred documents, but occasionally I'll need the physical document in the future (like for taxes or jury duty), so the metadata must include information about the document's physical location. (e.g. "Red Folder #1") Then when I need it again, I go linear scan Red Folder #1 looking for it. Also, I track the "due date" of the document, and show upcoming ones on the main page, so I see pending due taxes get closer and closer. Frickin' taxes. Anyway, I wrote some software. (parts are kinda crap because I always forget Python, but whatevs.) Some instructions: * tools/scancab is the client program. You use it to scan & upload. Read its docs & comments. You'll need to modify the email & password later. But first: * appengine/ is the AppEngine server component. Go to http://appspot.com/ to make an AppID ("bobscans"). Then get the 1.3.0 or higher App Engine SDK, tweak scanningcabinet/appengine/app.yaml file to match your AppID, then appcfg.py update 'appengine' to upload the app to your account. -- Now, go to https://<your_appid>.appspot.com/ and login. This makes your UserInfo entity in the database. That's all. -- Now, go back to http://appspot.com/, click your App, then click "Datastore Viewer" on the left. Find your UserInfo entity, click it, and modify its "upload_password" to some password you'll use for uploading. Don't use your Google password. Choose type "string". -- Now, go put your Google account's email & that password you just made up into scanningcabinet/tools/scancab * Now start scanning stuff. * Occasionally go add metadata at your app URL. Enjoy! Brad [email protected]
homelab
Brad's homelab setuphttp2
old repo for HTTP/2 support for Go (see README for new home)gomemcache
Go Memcached client library #golanggoimports
(old repo) Tool to fix (add, remove) your Go imports automatically.talk-yapc-asia-2015
talk-yapc-asia-2015shotizam
Shotizam analyzes the size of Go binariesexp-httpclient
experimental new HTTP client API for #golang (WIP)embiggen-disk
embiggden-disk live-resizes a filesystem after first live-resizing any necessary layers below it: an optional LVM LV and PV, and an MBR or GPT partition tablegitbrute
brute-force a git commit hashlatlong
The latlong package maps from a latitude and longitude to a timezone.iter
Range over integers [0,n). Seriously, that's it.jndi
a irresponsibly bad logging libraryautocertdelegate
Get LetsEncrypt TLS certs for internal-only TLS servers via a delegated golang.org/x/crypto/acme/autocert server.runsit
THIS IS OLD. DO NOT USE THIS. Just use systemd these days.go-smtpd
SMTP server library for Gocampher
Embed Perl in Go. This works, but was a joke for a presentation. Don't use.go-sql-test
test ALL the databaseswebsomtep
[joke] combination SMTP / WebSocket serverdeadbeef
Gimmicky commit hash made using bradfitz/gitbruteslice
The slice package sorts Go slices.snake
a #golang Snake game in webassembly running at http://snake.126.49.198.in-addr.arpa/webfist
WebFist implements WebFinger delegation for providers who don't support WebFinger natively.android-garage-opener
Android Garage Door Openerlesser
rfbgo
Toy RFB (VNC) Server in Go (#golang)go-tool-cache
inboxfewer
archive gmail threads when github or gerrit issues are closedart
Allotment Routing Tableshipit
Software Release Toolgitutil
Utilities for working with git and Gerritcontributing
(DEAD, SHUT DOWN) a repository of information on how to contribute to open source projectsandroid-squeezer
Android SqueezeCenter / SqueezeBox remote control client.undent
unindent stuffh2slam
slam an HTTP/2 server a lot of concurrent load over a single TCP connection (for debugging something)zippy-android-talk
Code to accompany my Zippy Android talk at Google I/O 2010go-issue-mirror
[old] precursor to golang.org/x/build/maintner/godatagoman
Gearman Client for Gominimal-qemu-linux
experimenting with a minimal Linux kernel under qemu-system for testinglitecmp
ip2asn
parser for iptoasn.com datahubbub-hub
A PubSubHubbub hub implementationsixmap
tool to visualize the SIX (Seattle Internet Exchange) route server coverageqopher
Gopher Queuegotsync
parallel tree syncqemu-guest-kragent
a minimal qemu-guest-agent in Go for gokrazy + Proxmox (qemu)powerview
Control Hunter Douglas PowerView shades & blindsgrpc-go16-demo
Demonstrating using Go 1.6's http2 to do grpcgo-get-proxy
http proxy for the "go get" subcommandgce
Go package for for Google Compute Engine (GCE)sonden
If Sonos is playing audio, turn on my Denon amps.go-runas
Wrapper around go's rpc pkg to drop root and run RPCs as another usertalk-http2go
HTTP/2 Go Talkcandysim
when will Candyland be over?morskoyboy
Bored on a bus with no Internet? Play ะะพััะบะพะน ะะพะน (Sea Battle), similar to Battleship.batt
build ALL the thingsset-consistenthash-perl
consistent hashing library for Perlissue-tracker-behaviors
lingobingo
lingo bingo lightning talkbrackup-gae-server
Brackup server for Google App Engineeight22er
[joke] Twitter Direct Message POP3 gatewayremserial-mirror
git mirror of remserialtalk-2016-08-16-seattle-go-1.7
aoc
advent of code helpers to reuse between tasksperl-denon-avr-4806
Perl code to control a Denon AVR-4806unicode-checkutf8
Perl module Unicode::CheckUTF8go-mod-archiver-test
perl-net-openid
Perl Net::OpenID::* modulesissuemirror
Code for mirroring Github issues to local files, and reading them.issue735583
Demo for Chrome issue issue 735583talk-2014-04-gophercon
Gophercon 2014 Talksys-syscall
Sys::Syscall -- access system calls that Perl doesn't normally provide access tok9sms
K-9 SMSbarlogalights
little program I use to run the LED strips in my home bartalk-2012-08-23-square-go
Talk about Go at Squarefotobilder-spiegel
Mirror photos & galleries from FotoBilder / LiveJournaldemocgoalloc
fw-test-agent
go-test-bug-repro
wintun-go
dev fork of golang.zx2c4.com/wintuntalk-gluecon-2010
Slides & code samples from my Gluecon 2010 talkLove Open Source and this site? Check out how you can help us