Software in this repo includes two services:
-
camera-webservice: Web service that exposes a RESTful API to use a local webcam to take a photo, upload it to an S3 target, and post metadata to ElasticSearch. Two versions are available, one written in Python and another in Ruby. This can be deployed on a laptop or e.g., on a Raspberry Pi.
-
webapp: Web app that displays a list of camera-webservice instances known to ElasticSearch allowing you to take photos. Includes a Dockerfile for containerized use.
The hack-night is intended to be a lightly structured event designed to allow hackers to explore, innovate and learn. The following instructions are provided as general roadmap to provide some structure.
Hackers are encouraged and should feel free to customize their work as they choose.
- Novice hackers (NOOBS): May want to follow the activity outline more closely. They may want to pair up with another Intermediate hacker for additional support. Novice hackers should definitely review the PREWORK.md document prior to the event to make sure they are prepared to get the most out of the event.
The instructions provided below are most likely not detailed enough for a novice hacker. Please contact the hack-night lead for additional supporting documentation - which provides a few more step-by-step instructions.
- Intermediate hackers: The instructions below are written with the Intermediate hacker in mind. The instructions are intentionally terse with the assumption that the hacker will use resources like Google to provide missing information.
The intermediate hacker should explore inside the files provided in Git to look for opportunities to customize, extend and improve the implementation.
If you are already familiar with learnings in a particular portion of the instructions, move along as quickly as you like to the next section where you can explore new ideas and technology.
-
Advanced hackers: Advanced should scan the below instructions and then create there own roadmap or project. Advanced users are also welcome to come in with their own project or an idea for advanced integration.
-
Other Hacker ideas: See the file named OtherHackerIdeas.md for some potentially interesting extensions to the hack-night activity. Please feel free to share these ideas with the rest of the team - specifically with a focus on how these help NetApp SE's better understand 3rd Platform/DevOps customers and sales motion.
Google and Youtube is how the modern developer learns. If you have a question, are getting an error message, or need to learn to do something - Try Google first.
If you then get stuck - ask your teammates - We are "Team NetApp" - never fail alone!
If you are still stuck - ask a hack-night lead for help.
The hack-night instructions are divided into modules to help provide structure and to help the hack-night leaders assess progress.
You will want to get (clone) the hack-night files from https://github.com/NetAppEMEA/hackathon-vol1
Hint: You will need a clone on both the RaspberryPI and your own laptop.
Once you have cloned your workspace, create a personal Git branch since you are going to make changes to the source code. Once you have made your changes on your branch, you will do a GitHub 'Pull Request' and push your changed back to GitHub for team review.
Look in a file named PREWORK.md which details suggested activities to do BEFORE coming to hack-night. It is encouraged that all hackers read thru the PREWORK.md document - even if that means you are doing that during the event.
- SSH to remotely connect to your RaspberryPI.
- Install the fswebcam and figure out how to take a picture.
- Hint: Google "fswebcam"
- Note: You may need to run the following command to load the camera driver.
- %> sudo modprobe bcm2835-v4l2
- Copy the image back to your PC (using SCP) and view the image.
- For security reasons, the instructor will provide an email which contains information on how to connect to the SGWS S3. The same email will provide instructions for connecting to the ElasticSearch server.
- Install a S3 browser tool like "S3 browser" for Windows or "CyberDuck" for Mac Note: CyberDuck won't allow you to set Bucket Policies.
- Connect, create a S3 bucket, then upload/download a file or image.
- Install an ElasticSearch Toolbox and connect to the ElasticSearch server.
- The files and instructions you need are in the camera-webservice directory.
- You will have the opportunity to use either the Python or the Ruby based webservice code.
Instructions are in the camera-webservice/README.md file
Instructions are in the camera-webservice/README.md file
Using the ElasticSearch Toolbox tools explore the data updated by all the hackers. Come up with an idea of what to search. Update the your webservice to add additional meta data to upload.
This module will be performed on your laptop and will not require the RaspberryPI.
- Docker needs to be installed on your laptop.
- Test some containers such as Ubuntu and httpd.
- Create your own Dockerfile based on on an inherited container (aka Ubuntu or httpd)
Clone web app from github, build a container for your web app, start container, verify you can access and take a photo.
- The files and instructions can be found in the webapp directory.
Issue a GitHub 'Pull Request' to submit your changes back to GitHub for review and merging back to mainline.
The repository has a file called "OtherHackerIdeas.md". Attack one of those idea or come up with your own.

