Skip to content

Commit 10e8964

Browse files
crigney3RamZallan
andcommitted
Added Jumpstart + older blog posts (#219)
* Added Jumpstart Blog Post * Added blogs from old repo * Made requested changes to Jumpstart blog post * Updated blog image hosting with s3 * Added hosted images for two more blogs * Lower blog font-size and remove broken image links from post Co-authored-by: Ram Zallan <[email protected]>
1 parent 91f1121 commit 10e8964

20 files changed

+647
-5
lines changed

_posts/2017-11-02-audiophiler.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
layout: post
3+
title: Creating Audiophiler
4+
date: 2017-11-02 21:25:00
5+
categories: projects
6+
description: Audiophiler, a neat python web app for serving music
7+
author: Stephen Greene
8+
image: https://assets.csh.rit.edu/pubsite/projects/Audiophiler.png
9+
image-sm: https://assets.csh.rit.edu/pubsite/projects/Audiophiler.png
10+
author-image: https://avatars0.githubusercontent.com/u/17414243?s=460&v=4
11+
author-bio: Second Year Computer Science Student at Rochester Institute of Technology and a System Administrator for CSH as well as KGCOE
12+
author-email: [email protected]
13+
author-social:
14+
github: https://github.com/sgreene570
15+
---
16+
[Audiophiler](https://github.com/sgreene570/audiophiler) is a Python Flask web app that serves audio files.
17+
Audiophiler uses CSH's Ceph storage cluster to hold audio files and serves them through an easy to use API.
18+
The Audiophiler API allows other house services to quickly retrieve a member's uploaded audio files.
19+
When members come off of the NRH elevators and walk onto floor, they can tap their iButton against one of the
20+
readers in the elevator lobby to load up songs on Audiophiler and play them aloud.
21+
22+
Audiophiler is the first web app that I've written entirely by myself. While working on the project, I learned _a lot_ about
23+
writing code for the web. Within my web app, I leverage a Postgres database to store audio file information. I also use
24+
CSH's Ceph environment to hand out links to audio files, allowing for very fast file retrieval.
25+
26+
Audiophiler went through many changes before I passed it as a major project, and is still being worked on now. In my opinion, Audiophiler is a great example of what CSH computer resources are capable of. The CSH OpenShift cluster lets me "deploy" my web app to the internet without any hassle.
27+
28+
In the future, I plan on cleaning up and optimizing Audiophiler. Recently, I have gotten some other CSHers to help me tweak my web app and offer feedback.
29+
I look forward to working with more people on my project and creating something that house members will use for a while.

_posts/2017-11-03-suds.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
layout: post
3+
title: SUDS
4+
date: 2017-11-2
5+
categories:
6+
- projects
7+
description: Shower Use Detection System
8+
author: Seth Gower
9+
author-image: https://avatars3.githubusercontent.com/u/19225089
10+
author-bio: First year Computer Engineering student
11+
author-email: [email protected]
12+
author-social:
13+
github: https://github.com/SethGower
14+
linkedin: https://www.linkedin.com/in/sethgower/
15+
---
16+
[SUDS](https://github.com/sethgower/suds), or the Shower Use Detection System, shows the status of the showers in our dorm hall, which is located on the third floor of Nathaniel Rochester Hall. When someone is in the shower and the door is locked, an LED on a panel in the hall next to the bathroom illuminates. In addition to the LEDs outside of the bathroom, I will be creating a web app to track live status updates remotely, and potentially collect statistics on when the showers/stalls are most used.
17+
18+
SUDS is the first big hardware project that I have ever actually done, and the first time I have soldered my own board (outside of soldering headers onto MCUs and chips). The web app that I am going to build will be my first time using a MySQL database and creating a server-side backend that handles all of the input from the bathrooms.
19+
20+
SUDS is a project that was first created by CSHers a few years ago. It was originally a simple circuit driven by AA batteries, but my version runs on a Raspberry Pi.
21+
22+
SUDS is driven by a Raspberry Pi in the bathroom ceiling, which outputs 5V; for future versions I will be making the circuit draw 3.3V to decrease the brightness of the LEDs. The current then goes to a limit switch on the door lock which closes the circuit and illuminates the LED for that shower. The wiring diagrams can be found on the [GitHub page](https://github.com/sethgower/suds). On the proto-board, on the same row as the anode of the LED, there is a pulldown resistor that leads to the GPIO pin corresponding to that shower.

_posts/2017-11-27-soft-calendar.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
layout: post
3+
title: Soft Calendar
4+
date: 2017-11-27
5+
categories:
6+
- projects
7+
description: A Calendar Event Manager!
8+
image: https://assets.csh.rit.edu/pubsite/projects/softCalendar.jpg
9+
image-sm: https://assets.csh.rit.edu/pubsite/projects/softCalendar.jpg
10+
author: Skyler Clark
11+
author-image: https://avatars0.githubusercontent.com/u/4897492?s=400&v=4
12+
author-bio: A freshman computer science student!
13+
author-email: [email protected]
14+
author-social:
15+
github: https://github.com/SkylerJaneClark
16+
linkedin: https://www.linkedin.com/in/skyler-c-58962012b/
17+
---
18+
Soft calendar is an Android app that helps keep Google Calendars clean and organized, making an easy to view checklist of events and their due dates. It is integrated with Google Calendar, so when you want to commit to an event, just select it from the list and push it to your calendar!
19+
20+
Soft calendar was the first Android app I’ve ever built, and with it came a lot of challenges. In all honesty, I would say that the hardest step was configuring my development environment, and learning about how Android Studio worked. After that, I had to learn about how the Google Calendar API worked, how authentication worked, how to pass data through forms, how to save user input, (and fix all of the bugs that naturally crop up along the way when you have no idea what you’re doing!)
21+
22+
I came up with the idea during my first week or so of school, when there were a ton of things to do all happening at the same time, and I was a little overwhelmed. My soft calendar idea was so I could make a visual representation of the things I wanted to do without having to clutter my Google Calendar with things that I may or may not end up at. The irony is that coding the soft calendar actually ended up taking up all my time, as opposed to going places, rendering the whole thing pretty counterintuitive!
23+
24+
But all things considered, working on an Android app really taught me a lot about how to work on (and finish!) a project instead of just going halfway and leaving it unfinished forever. Though I wouldn’t recommend working on an Android app as a first project, it was really a worthwhile experience regardless. You can see all of the source on my [GitHub page](https://github.com/SkylerJaneClark/softCalendar) If you think it’s cool, or that you could use something like this in your life, you can download it right onto your phone from the [releases](https://github.com/SkylerJaneClark/softCalendar/releases)

_posts/2017-12-27-deepnet-synapse-delta-visualizer.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ date: 2017-12-27
55
categories:
66
- projects
77
description: Four Layer Deep-Learning Neural Network with OpenGL Visualization
8-
image: https://csh.rit.edu/~jpotter/tri.png
9-
image-sm: https://csh.rit.edu/~jpotter/tri.png
8+
image: https://assets.csh.rit.edu/pubsite/projects/neuralNetwork.png
9+
image-sm: https://assets.csh.rit.edu/pubsite/projects/neuralNetwork.png
1010
author: Jacob Potter
1111
author-image: https://csh.rit.edu/~jpotter/jpotter.jpg
1212
author-bio: Second year Computer Science major.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
layout: post
3+
title: Alexa RSS Skill
4+
date: 2018-01-22
5+
categories:
6+
- projects
7+
description: Alexa Skill that reads out tags from an RSS Feed
8+
image:
9+
image-sm:
10+
author: Fred Rybin
11+
author-image: https://avatars0.githubusercontent.com/u/17693407?s=460&v=4
12+
author-bio: First Year Computing Security student
13+
author-email: [email protected]
14+
author-social:
15+
github: https://github.com/frybin
16+
linkedin: https://www.linkedin.com/in/frybin/
17+
---
18+
19+
The [Alexa RSS Skill](https://github.com/frybin/Alexa-RSS-Skill) is an Alexa skill, which is an app for Amazon's Alexa platform, that reads content in tags from an RSS Feed. It works by asking the user for an input for which RSS Feed they would like hear and then from the user's input it reads out the appropriate feed. The data for the different feeds like that name and links to the feeds are all stored in MySQL. Due to the skill needing to pull information from a database, I decided to make a companion web app to go with it. The [RSS Companion App](https://github.com/frybin/RSS-Web-App) is a simple Python Flask web app that connects to the same MySQL database as the Alexa skill and lets the user add, edit, and delete RSS feeds from the database.
20+
21+
The Alexa RSS Skill and its companion app is the first big coding project that I have ever made. When I first started on this project, I had very little coding experience and had no knowledge on how Amazon Alexa and AWS Lambda worked. While working on this project I had learned how to use Git, GitHub, Node.js, Amazon AWS, and Python Flask. The skill went through many iterations until I finally understood how Amazon AWS Lambda and the Alexa Skill Builder worked and communicated with each other.
22+
23+
All in all, I found this project enjoyable and it was a great learning experience. Though I am finished with this project, I plan to try to make another Alexa skill using another coding language like Python. Although I might now know the basics about making a skill, I could learn something new and have more fun troubleshooting through the problems that arise in coding projects.
24+
25+
You can see the all of the source for the Alexa Skill [here](https://github.com/frybin/Alexa-RSS-Skill) and for the web app [here](https://github.com/frybin/RSS-Web-App).

_posts/2018-02-26-freeipa.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ title: Deploying FreeIPA
44
date: 2018-02-26 21:25:00
55
categories: projects
66
description: Migrating from custom LDAP/Kerberos setup to Red Hat's identity management platform.
7+
image: https://assets.csh.rit.edu/pubsite/projects/FreeIPA.png
8+
image-sm: https://assets.csh.rit.edu/pubsite/projects/FreeIPA.png
79
author: Marc Billow
810
author-image: https://2.gravatar.com/avatar/254e59006e0d907f97c529c62689c0e0?s=400
911
author-bio: Networking and System Administration '18 at the Rochester Institute of Technology and System Administrator for Computer Science House
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
layout: post
3+
title: Smart Window Shades
4+
date: 2018-03-01 00:00:00
5+
categories: projects
6+
description: A web service that allows one to control their window shades using a website
7+
author: Ayush Goel
8+
author-image: https://avatars2.githubusercontent.com/u/10407155?s=460&v=4
9+
author-bio: First Year Computer Science Student at Rochester Institute of Technology
10+
author-email: [email protected]
11+
author-social:
12+
github: https://github.com/ag-ayush
13+
linkedin: https://www.linkedin.com/in/ayush-goel-589ba215a/
14+
---
15+
# Summary
16+
Smart shades is a web service that allows one to control their window shades using a website.
17+
The hardware requirement is a Raspberry Pi (connected to the Internet), a stepper motor, housing for the stepper motor (3D printed), a stepper motor driver (I used the Pololu A4988), a 10K ohm resistor, and a domain.
18+
The application uses Python, Flask, OpenShift in the back end, Bootstrap, JavaScript, and Ajax.
19+
In short, there are two Flask apps running, one on [a CSH domain](https://shades.csh.rit.edu) and one on the Pi.
20+
The Flask app on the CSH website has the JavaScript and Ajax to make requests to the Flask app on the Pi, which can then take care of changing the window shades.
21+
22+
# The Story
23+
I picked up this IOT project from R&D.
24+
Spencer, our current R&D director, had the hardware (stepper motor, housing for stepper motor, and the stepper motor driver) and asked if someone could do the software by ImagineRIT.
25+
I had some ideas for ImagineRIT, but this one seemed more fun than the rest of them.
26+
I went into this knowing how to code, specifically in Python, but not having a great understanding of how to incorporate the hardware with the software, including web application integration.
27+
I started the project by figuring out how to use RPi.GPIO library by making a simple program with LEDs.
28+
Then I started using the stepper motor driver and the stepper motor.
29+
This ended up being a hardware problem, not a software one.
30+
After countless hours I figured out that I can connect an LED to 2 of the 4 pins of the motor and if the LED lights up upon turning the motor then I have found a pair of wires.
31+
From there I had to figure out how stepper motors work in software, which comparatively was not that difficult.
32+
33+
The next part of this project was controlling the motor from a website.
34+
I started by reading about **Flask** and making a quick Hello world application on the IP on the Pi.
35+
Since Flask uses python, and so does my code for the shades, I was simply able to combine the two.
36+
I learned about **HTML** and **bootstrap** while creating the index page for this application.
37+
38+
I now needed a domain that people could type in, because remembering an IP address is only possible when you type it in countless times as the developer.
39+
Thankfully, our OpComm director, Steven, helped me out during the OpCommathon by showing me OpenShift.
40+
As soon as I ran it up, it crashed.
41+
Rpi.GPIO imports can only be run on a Raspberry Pi... I eventually decided to make a second Flask app that would simply run on the CSH domain and link to the IP of the Pi.
42+
This, however, was not ideal because every time you changed the height of the shade, the page would reload.
43+
That is neither pretty nor efficient.
44+
To make the matters worse, the link was to an IP address, and a real world application should not be pointing to an IP address.
45+
I asked around, and upon the suggestion of our financial director, Devin, I decided to implement **Ajax**.
46+
47+
I had never used JavaScript, nor Ajax prior to this, so it was a bit of learning curve.
48+
Obstacle one was making the script work; aside from syntax, it took a while to realize that script needed to be called after the buttons were created.
49+
Then came other obstacles, such as not being able to POST to Pi because it ran on HTTP and the website ran on HTTPS.
50+
Somewhere in there I had to implement CORS or Cross-Origin Resource Sharing, lack of it crashes the program.
51+
With the help of our chairman, Jordan, I was able to get the Flask application on the Pi running on HTTPS, thereby allowing communication between the CSH domain and the Pi.
52+
53+
I proceeded to add some more functionality to this application after OpCommathon.
54+
This took a couple day's worth of work because I was still learning JavaScript.
55+
Now you can click buttons to set the height as a percentage, change how many steps or pulses the motor requires to make the shade go from completely down to completely up, and move the motor n steps at a time for debugging purposes.
56+
Furthermore, it shows the current shade percentage.
57+
The idea behind showing that information is that if it does not match up with what you have physically in front of you, then you will know that you need to change your values for the program.
58+
The best part is that the page does not reload upon calling a function, the two apps simply talk to each other.
59+
60+
Altogether, this project was a lot of fun.
61+
I learned quite a bit, both in the software world and hardware world.
62+
ImagineRIT is still weeks from now, and as a result I plan on adding Amazon Alexa Skill to this, or someway of using voice command to perform the same actions.
63+
64+
P.S. For details on wiring components, please visit the GitHub source of this project [here](https://github.com/ag-ayush/smart-window-shades).

_posts/2018-02-28-swiftfall.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
---
2+
layout: post
3+
title: Swiftfall
4+
date: 2018-02-28 21:25:00
5+
categories: projects
6+
description: A wrapper for an API called Scryfall.
7+
author: Braden Bowdish
8+
image: https://assets.csh.rit.edu/pubsite/projects/swiftfall_screenshot.png
9+
image-sm: https://assets.csh.rit.edu/pubsite/projects/swiftfall_screenshot.png
10+
author-image: https://avatars2.githubusercontent.com/u/15185628?s=460&v=4
11+
author-bio: Lover of Swift and Magic. 3rd year member of Computer Science House.
12+
author-email: [email protected]
13+
author-social:
14+
github: https://github.com/bmbowdish
15+
---
16+
17+
# What is Swiftfall?
18+
19+
Swiftfall is an API wrapper written in Swift for the API Scryfall.
20+
21+
[Scryfall](https://scryfall.com/docs/api) is an API which handles information about the card game Magic: The Gathering.
22+
23+
I like Magic the Gathering, but getting tons of information about Magic cards is really annoying, especially if you don't want to or don't know how to implement a JSON parser or make requests to a website. Many newer developers would like to combine their passions but it's not always easy.
24+
25+
Thankfully, [Scrython](https://github.com/nandascott/Scrython) does this already, but in Python.
26+
27+
### Why Swift Was Appealing
28+
1. Swift's use of optionals was really appealing. Sometimes you can't be absolutely sure about whether or not a request has been successful. Optionals allow a developer to handle those situations extremely safely.
29+
2. Swift has a JSON decoder built in and it is appealing to have no dependencies.
30+
3. iOS, Apple TV, Apple Watch, and MacOS development are all far easier in Swift
31+
4. Swift is new, and it is fun to do things never done before
32+
33+
# How do you use Swiftfall?
34+
First, create an executable package. The executable includes a Hello World function by default.
35+
36+
```
37+
$ mkdir MyExecutable
38+
$ cd MyExecutable
39+
$ swift package init --type executable
40+
$ swift build
41+
$ swift run
42+
Hello, World!
43+
```
44+
45+
Next,
46+
47+
```
48+
$ swift package generate-xcodeproj
49+
```
50+
51+
This creates the correct package files so you can add dependencies.
52+
53+
Then, add Swiftfall as a dependency for the executable.
54+
55+
```
56+
import PackageDescription
57+
58+
let package = Package(
59+
name: "MyExecutable",
60+
dependencies: [
61+
// Dependencies declare other packages that this package depends on.
62+
// .package(url: /* package url */, from: "1.0.0"),
63+
.package(url:"https://github.com/bmbowdish/Swiftfall.git", from: "1.2.0")
64+
],
65+
targets: [
66+
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
67+
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
68+
.target(
69+
name: "MyExecutable",
70+
dependencies: ["Swiftfall"]),
71+
]
72+
)
73+
```
74+
75+
Then, run:
76+
77+
```
78+
$ swift package generate-xcodeproj
79+
```
80+
81+
I believe this is because you need to pull down the new dependencies from the source.
82+
83+
84+
Now you're ready to use Swiftfall!
85+
86+
# Actually Using Swiftfall
87+
88+
## Getting a Card
89+
`Swiftfall.getCard(fuzzy:String) -> Card? _(Fuzzy search)_`
90+
91+
`Swiftfall.getCard(exact:String) -> Card? _(Exact search)_`
92+
93+
`Swiftfall.getRandomCard() -> Card? _(Random Card)_`
94+
95+
Ex.
96+
97+
```
98+
import Swiftfall
99+
let card = Swiftfall.getCard(exact:"Black Lotus")
100+
card?.simplePrint()
101+
```
102+
103+
Out.
104+
105+
```
106+
Name: Black Lotus
107+
Cost: {0}
108+
Type Line: Artifact
109+
Oracle Text:
110+
{T}, Sacrifice Black Lotus: Add three mana of any one color to your mana pool.
111+
```
112+
113+
## Other Things
114+
Swiftfall supports more than just cards. Other items you can retrieve include:
115+
116+
* Sets
117+
* Rulings
118+
* Ruling Lists
119+
* Card Lists
120+
* Set Lists
121+
122+
You can find more information about [Swiftfall on GitHub.com](https://github.com/bmbowdish/Swiftfall)

0 commit comments

Comments
 (0)