M.Sc.Eng.Math.
@hbldh |
Hello and welcome to this presentation called The Point of Pointless Projects.
I am going to tell you about soem spare time programming projects of mine and from them try to extraoplate some insights about such projects in general.
My name is Henrik Blidh, I have a Master's Degree in Engineering Mathematics and this is you you can get in touch with me later on.
This talk will present four years worth of spare time coding, focusing very little on the actual code written but rather describing both the intented and unintended effects of the coding.
This talk will present four years worth of spare time coding, focusing very little on the actual code written but rather describing both the intented and unintended effects of the coding.
Almost all projects lead to some kind of increase in knowledge, but I will not list all the things I learned during the projects. If I did I would talk all day and you would find it tremendeously boring...
N.B. this is a personal, incomplete, definition!
What constitutes a pointless project?
N.B. this is a personal, incomplete, definition!
Sudoku Solver in pure puthon, no dependencies.
When it was done, I realised that I would never use it since I would have to enter the Sudoku to solve manually.
hbldh/dlxsudoku
hbldh@devbox ~ $ solve-sudoku --sudoku "030467050920010006067300148301006027400850600090200400005624001203000504040030702" 138|467|259 924|518|376 567|392|148 ---+---+--- 351|946|827 472|851|693 896|273|415 ---+---+--- 785|624|931 213|789|564 649|135|782
Desired output: Sudoku Solver
Unexpected output:
hbldh/sudokuextract - Package for extracting Sudokus from images using scikit-image.
hbldh/sudokuextract
hbldh/sudokuextract
hbldh/sudokuextract
The idea:
- Using scikit-image (since opencv for Python complicated to install)
- Needs some OCR solution for detecting digits.
After doing some failed tests with Tesseract I decided to do it myself.
Read some papers. Decided on Elliptical Fourier Descriptors and Machine Learning.
hbldh/sudokuextract
hbldh@devbox ~ $ parse-sudoku --oneliner -p "sudoku.jpg" > "/tmp/sudoku.txt" && solve-sudoku --path "/tmp/sudoku.txt" 853|126|749 429|873|156 167|945|283 ---+---+--- 518|239|674 342|687|915 976|451|832 ---+---+--- 794|568|321 635|712|498 281|394|567
Desired output: Sudoku Image Parser
Unexpected output:
hbldh/pyefd - Elliptical Fourier Descriptors package
hbldh/pyefd
Data from: LeCun et al. (1999): The MNIST Dataset Of Handwritten Digits
I did not find any good implementation of EFD online, so I wrote one.
EFD provides a means of representing a contour by an array of numbers, providing the means of applying a machine learning solution for classifying images into different digits.
It works decently well. I still haven't been able to handle photos of Sudokus on computer screens.
When this was done I realised that I would never use it since I would never have the energy to take a photo, save it to disk and run a command line tool on it just to solve a Sudoku
hbldh/sudokuextract
hbldh@devbox ~ $ parse-sudoku --oneliner -p "sudoku.jpg" > "/tmp/sudoku.txt" && solve-sudoku --path "/tmp/sudoku.txt" 853|126|749 429|873|156 167|945|283 ---+---+--- 518|239|674 342|687|915 976|451|832 ---+---+--- 794|568|321 635|712|498 281|394|567
Desired output: Sudoku Image Parser
Unexpected output:
hbldh/xanadoku - Web interface for solving Sudokus...
hbldh/xanadoku
Desired output: Sudoku Solver Web application
Unexpected output: None
hbldh/pybankid-example-app
>>> from bankid import BankIDClient >>> client = BankIDClient(certificates=('path/to/certificate.pem', 'path/to/key.pem'))
Desired output: Flask web application for exploring use of BankID.
Unexpected output:
hbldh/pybankid - BankID client for Python.
hbldh/flask-pybankid - Flask Extension for PyBankID client.
I then built a Python package for recording data with it.
hbldh/pyberryimu
Desired output: Python client for BerryIMU.
Unexpected output:
hbldh/calibraxis - Implementation of accelerometer autocalibration method.
hbldh/pyberryimu-rest - Web interface for initiating recording.
I backed two projects on Kickstarter during the prototype stage, so when I was done with the Raspberry stuff these little Bluetooth Low Energy sensor board beauties arrived on my doorstep!
They had iOS, Android and C++ APIs.
Guess if they had Python connectors?
During prototype stage, I backed two other projects on Kickstarter. By the time the previous sensor rig project was done these BLE boards arrived in the mail.
Guess if they had a Python conectors?
hbldh/pymetawear
This one is currently ongoing, so I cannot say very much about the unexpected output yet.
Desired output: Python client for MetaWear boards.
Unexpected output:
- Will probably yield at least one pull request to Python GATT communication libraries.
hbldh/pymetawear
This one is currently ongoing, so I cannot say very much about the unexpected output yet.
Desired output: Python client for MetaWear boards.
Unexpected output: Will probably yield at least one pull request to Python GATT communication libraries.
I play the violin.
I joined a folk music association in 2012.
I became treasurer immediately...
As I went deeper into the paperwork of the association I found that it held massive amounts of material (sheet music, member publications, paper clippings, audio interviews, video recordings, photos etc.) that no one benefitted from in their current state.
As a believer in online availability for all things I started thinking...
I play the violin.
I joined a local folk music association in 2012.
I became treasurer immediately...
As I went deeper into the paperwork of the association I found that it held massive amounts of material (sheet music, member publications, paper clippings, audio interviews, video recordings, photos etc.) that no one benefitted from in their current state.
As a believer in online availability for all things I started thinking...
Desired output: Constantly available archive, running free of charge.
Unexpected output:
- 2 accepted pull requests to Flask-PyMongo
- 2 MongoDB certifications!
hbldh/MongoLab-REST-GAE - REST API client for GAE
- Notice the past tense in the list above?
Constantly available archive, running free of charge.
Unexpected output:
- 2 accepted pull requests to Flask-PyMongo
- 2 MongoDB certifications!
- hbldh/MongoLab-REST-GAE - REST API client for GAE
- Notice the past tense in the list above?
Desired output: Constantly available archive, still running free of charge.
Unexpected output:
- PDF manipulation GUI.
- Lots of hugs from older members of the association. (Ok, not really unexpected.)
Constantly available archive, still running free of charge.
Unexpected output:
- PDF manipulation GUI.
- Lots of hugs from older members of the association. (Ok, not really unexpected.)
hbldh/skboost - Multiple Instance Learning boosting algorithm.
hbldh/b2ac - Ellipse fitting implemented in fixed point C!
nExtClient - Python client for Nordnet Bank's data API service. Not open sourced yet, needs unit tests first.
hbldh/skboost - Multiple Instance Learning boosting algorithm.
hbldh/b2ac - Ellipse fitting implemented in fixed point C!
nExtClient - Python client for Nordnet Bank's data API service. Not open sourced yet, needs unit tests first.
Space | Forward |
---|---|
Right, Down, Page Down | Next slide |
Left, Up, Page Up | Previous slide |
P | Open presenter console |
H | Toggle this help |