Making an Alexa Skill

I’m currently leading a team and we’re building an Alexa Skill, to learn the basics I followed along with a YouTube Series which shows how to create an Alexa Skill which uses YouTube API to see real statistics for viewer count and subscriber totals. The YouTube video is listed below under sources.

GitHub Repository: https://github.com/Znergy/youtube-data-alexa-skill
————————————

Alexa Skill: YouTube Data API

This Alexa Skill queries the YouTube Data API, and returns the subscriber count and viewer count based off what the user asks for.
Examples:
“Alexa, ask youtube data stream for current subscribers count”
“Alexa, ask youtube data stream for number of video views this month”

Project Requirements
To fully understand what’s taking place

You need some understanding of AWS
You need some understanding of Node.js
You need some understanding of API’s

Lambda Setup

Navigate to AWS Console, sign in, click Lambda, set geolocation (top right) as N. Virginia, click create new Lambda function
Select Blank function as template
Select Alexa Skills Kit as a trigger (see below)

You need to create an account in the Alexa Developer console for the alexa skills kit to show in the lambda trigger dropdown menu
URL: https://developer.amazon.com/

Lambda Configuration
Set lambda function name as ‘youtubeDataAPIAlexaSkill’
Create a role with basic lambda execution permission (lambda_basic_execution)
Add the temp.js code to your lambda function

YouTube API Key
Get a YouTube Data API Key from Google API Console
Go to Library, click YouTube Data API, click get credentials, and copy the API key

YouTube Channel ID
Get your channel id from YouTube Advanced Settings
Log In, click user icon, click account settings icon, click advanced (next to profile picture)
Copy Youtube Channel ID

Adding YouTube Credentials to your lambda function
Using both your YouTube API Key and YouTube Channel ID add them to the endpoint variable inside of your lambda function (code copied from temp.js)
Each different intent needs the updated endpoint for your Alexa skill to work properly
Example, https://www.googleapis.com/youtube/v3/channels?part=statistics&id=channel_id&key=your_api_key

Alexa Setup
Go to the Alexa Console, sign in, click Alexa, then click Alexa Skills Kit
Click ‘Add a New Skill’

Alexa Skill Configuration
Create an Alexa app name, I used ‘YouTube Data API’
Create an Invocation name, I used ‘youtube data stream’ (this is your Alexa skill name)
Click Next
Add the intent-schema.json code and insert into ‘Intent Schema’ section
Add the sample-utterances.txt text and insert into ‘Sample Utterances’ section
Click next
Connect your Lambda function using the ARN from AWS Lambda console
Example, arn:aws:lambda:us-east-1:xxxxxx:function:youtubeDataAPIAlexaSkill
Click next

Testing
Type a sample utterance, ex: ‘current subscriber count’ and hit ‘Ask YouTube Data API’
This should trigger your lambda function and respond with how many subscribers you have

**You can also copy the JSON request code from the test page into the AWS Lambda console, click ‘configure test event’ and see the console logs, at each state change in Alexa’s lifecycle

Reporting bugs
If any of the information above, doesn’t work or is missing a step. You can reach me at ryanjonesirl@gmail.com

Sources
YouTube: https://www.youtube.com/watch?v=zt9WdE5kR6g
AWS: https://aws.amazon.com/
Lambda: https://aws.amazon.com/lambda/
Youtube Data API: https://developers.google.com/youtube/v3/
Alexa Skills Kit: https://developer.amazon.com/alexa-skills-kit
Alexa: https://developer.amazon.com/alexa

DynamoDB and NoSQL databases

DynamoDB, a NoSQL database that is fast, scalable, fully managed, allows serverless functions called ‘lambda’, and flexible. Cherry on top, your data is stored on SSDs and automatically replicated across multiple Availability Zones, which provides high availability and data durability.

Let’s discuss our terms a bit, what is NoSQL? NoSQL is a non-relational database that utilizes many data structures like key-value, document, and many other. Let’s focus on using key-value pairs for retrieving data from the database. For key-value pairs each key can’t be replicated. The key-value method has high performance, high scalability, and high flexibility. Another ‘key’ feature of NoSQL databases, is the loss of the ability to perform joins. However, there is still a way to work around this dilemma. One instance, would be using multiple queries to attain the desired data. Since NoSQL queries are faster than relational queries this is a good method, to a certain degree. Additionally, you don’t need a database schema with NoSQL, in most cases you don’t need to explicitly define your schema up front and you can just create new fields as you need them. Very cool.

Why do people use NoSQL versus a relational database? “Motivations for this approach include: simplicity of design, simpler “horizontal” scaling to clusters of machines (which is a problem for relational databases), and finer control over availability. The data structures used by NoSQL databases (e.g. key-value, wide column, graph, or document) are different from those used by default in relational databases, making some operations faster in NoSQL. The particular suitability of a given NoSQL database depends on the problem it must solve. Sometimes the data structures used by NoSQL databases are also viewed as “more flexible” than relational database tables.”

So it depends, on the ‘problem it must solve’. Here’s an example of what those problems make look like (use cases). Example, wall street has been transformed by algorithmic trading and for the purpose of evaluating lots of conditions quickly, a relational database will not due. The high speeds of NoSQL databases have been a cornerstone in stock trading as of late.

Why I choose DynamoDB to write about. I’m currently studying to get my AWS developer and solutions architect certificate. I have an AWS study group that meets twice a week for four hours to work through a course to obtain the skills needed to deploy web applications in the cloud and get certified. So far I’ve learned enough to realize how much I don’t know. At least when it comes to deploying web applications made in Java, it’s not as simple as throwing your code in S3 (simple storage solution, aka Amazon’s version of dropbox or google drive) then configuring S3 to work as web hosting. With a Java application there is a lot more configuring and knowledge required to launch your code. Which is something I’m actively trying to tackle so I can get my Java code deployed to the cloud.

I’m planning on diving deeper into NoSQL databases, since this is what AWS is built from and realistically the future. Using DynamoDB, Amazon Lambda functions, API gateway, S3, and Route 53 you can create serverless architecture, which are super fast, dirt cheap, and freaking cool.

Sources: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html
http://www.dataversity.net/4-use-cases-for-nosql-databases/
https://en.wikipedia.org/wiki/NoSQL

Learning the truth about code school graduates

The intention of this post is to give some insight into Epicodus from a content perspective. As many people have already said before, you get out what you put in.

Learning what jobs code school graduates are usually qualified for has been a wake up call. When I first learned about code schools, I immediately thought they were a good way to get my feet wet in programming and get me into that Junior developer role. However, I was skeptical and I did a fair amount of research. Ultimately, my choice for code school came down to price. Currently, I am attending a code school name Epicodus. Epicodus is a beautiful place to grow as a person and a developer, but I’ve come to realize that merely doing the course material and showing up everyday will not be enough.

Recently, I was talking to fellow students from higher classes and they were pretty blunt in explaining that there is a lot of gaps in the Epicodus courses. Outdated information, skimmed concepts, and a lack of ability to pump out new content. These all contribute to the idea that Epicodus graduates may not be qualified for a Junior developer role, strictly from following along with the course material. I believe I’ll be fine, but that is do to a lot of outside work. Thanks, to my lack of financial ability I have been fighting to stay at Epicodus, including going to college full time and working as well. My weeks for the past two months have been 70+ hours long, and I’ve started to feel it. However, all my classes in college are centered around programming so the skills I have been building outside of Epicodus range from JavaScript to Java to PHP/SQL.

Okay, so I should be fine (let’s hope haha), but what is the reality for other graduates? I believe that without a proper amount of drive to push past the course material future graduates will ultimately be disappointed when graduation day arrives and the job search begins. There are plenty of ways for you to get extra reps outside of class. This could be slightly changing the course material for the day and reworking it, working on side projects, or taking Udemy/Coursera/PluralSight courses that correlate with the current language being taught. My dad made a good point the other day, he said ‘all it takes to surpass your peers is putting in 1% more effort’.

I’m gonna run with that idea and add that I believe putting in a little extra effort also compounds over time. It’s hard to notice the fact you’re making small inches forward, but a month later or six months later. The results of slightly more work will be a defining point of your growth as a developer. This is not a guide on how to get rid of your bad habits so that you can become more productive, hell I don’t think I would even be qualified to suggest anything. My solution to putting in 1% more effort was not by choice, but due to circumstance.

To wrap up, I’m glad I was informed of this knowledge gap early enough that I could keep a close eye on my progress. My goal going forward is to be at Epicodus 7 days a week. This will be tough, but it feels necessary. There is another clear benefit as well, since I’m taking three programming classes at Portland Community College (which makes me a full time student) it would also help me stay on top of my school work.

Free Time, Is It Good?

There are a few reasons I would say yes, to the question above, but however after speaking to my dad about this I think the opposite is true. Let’s first define what ‘free time’ really is. Free time as described by wikipedia, free time is time spent away from business, work, job hunting, domestic chores, and education. I completely agree with the definition, but I don’t actually believe that having extra ‘free time’ is a positive thing. Other people may disagree, saying things like ‘well I need time to decompress from work or school’.

This is understandable, work hard play hard. Yet, at what point does that free time transcend into a bad thing? How long do you have to spend experiencing abundant free time before ‘decompressing or relaxing’ becomes a crutch. I believe that this is something most people are handicapped by. They live in a world where free time has consumed any ability to be productive. To a certain degree, it is all relative. What is free time to someone working 60 hours a week or 80 hours?

The one thing we do know is after enough time, you can get used to anything. For the person working 60 hours a week, who may never have a full day off he would probably saying something along the lines of, ‘I’m busy, but I do have free time.’ At least I would, currently I’m going to school full time (taking three programming classes), working part time (around 15 hours F-Sun), and spending 40/hr week at a coding bootcamp M-F. My schedule is pretty intense, but if you break down how much time I spend commuting as well it’s around 2 hours everyday (14 hours of commuting per week).

My schedule is crazy and I’ve been doing it for the past 2 months. Here are why my views on this lean more towards free time being a bad thing. Prior to all of this, before January 2017, I was struggling to pass my community college courses, when I wasn’t working, and when I had the entire week for homework. Why? Free time, with the idea that I had all the time in the world, I stayed idle, only finishing homework or projects right before they were due. My week was filled with 40 hours of video games.

Thanks, to this radical schedule I have been able to completely reshape who I am. In my past semester of community college, I made 2 A’s and I haven’t been fired from my part time job for not showing up do to being tired. I’ve been on top of all of the bootcamp work and I have noticed, I don’t want to play video games I just want to fill any remaining time with being productive.

Therefore, I think it’s a fair assessment to assert that ‘free time’ is the enemy in excess. Staying busy and having to push myself daily has made me a stronger person and I feel like I now have a productivity superpower.

Clean Code, part 2

How do we measure a programmers ability? Can we? I believe evaluating a programmers code to see how 'clean' it is would be a decent benchmark.

To write clean code, you have to do as Robert Martin says and "limit the amount of WTF moments you cause for another programmer looking at or working on your code". For me, this makes sense and seems like a good way of describing why clean code would be important.

When someone is viewing your code they are seeing how you think, how you come to a solution, and whether or not your code would cause more problems than it solves when minor condition changes come into play. In CSS, there are certain standards for how you write CSS code to style HTML. Not including the classes used from libraries, you want to limit the amount of classes and ids, only using them when absolutely necessary. Otherwise, you should be targeting the elements on the page using pseudo code like ':last', ':first', or 'nth:child()'. This allows for greater scalability, when your conditions undoubtedly change. For styles that need to be applied across a range of different elements, that is where adding a class would come in. Here's an example that helped me wrap my head around the power of elegant solutions.

Think about how a train operates, the track allows the train to move quickly and stay balanced. A train is simple, it's elegant, and the solution to mass travel at high speeds has been solved by the train for years.

When a train travels into a city environment, questions like, how does the wheel adjust to a flat surface, arise. However here lies the beauty, it doesn't have too. No adjustment is required, except slowing down of course. Instead it's one wheel, one train, and it can run on an above ground track or a track that resides below the ground.

In software development and as software developers this is what we should strive for. Finding solutions that can withstand the test of time. Obviously, technology is changing at an exponential rate, but that doesn't mean we can't push for a high level of code reusability.

Code reusability, is a corner stone of good software. The more modular the code is and the more able the code is to face varying conditions, is another way to measure a programmers ability to write clean code.

When we think about solving problems in this way it does require extra work, more thought out actions, but it allows more room for future adjustments.

Questions like.. is this the best solution? How does the code I'm implementing affect future actions? What problems does this code cause, when changing it slightly? While learning responsive Web design, these issues have been personified.

Here's an example, I adjust the padding of my image to better fit the flow of my website at 1280px+, all though as it scales down, issues arise. Well you may tell me that media queries will save me, and all though it's true to a degree, you have to hard code each break point.

Now imagine if I was having issues with more than one element. It could be done, and it would serve as a temporary working solution, but only open the door to issues later on.

Moral of the story, take extra time to thoroughly plan out how the program will function from the methods to the flow of your website. Don't be afraid to step outside your comfort zone and stack overflow better solutions, that have longer life spans when new conditions are introduced.

Clean Code Part 1

The goal of writing clean code is to make your code easy to read and understand. Simple is better and less is more?

Lets think about how a train operates, the track allows the train to move quickly and stay balanced. The track to train wheel is an elegant solution to cutting out the what if factor. A train is simple, it's elegant, and the solution to mass travel at high speeds has been solved by the train for years. 

When a train travels into a city environment, questions like, how does the wheel adjust to a flat surface, arise. However here lies the beauty, it doesn't have too. I pondered this question and thought about an adjusting wheel, well after all of 5 secs I could already imagine the slew of issues with that solution. Instead it's one wheel, one train, and it can run on an above ground track or a track that resides below the ground.

In software development and as software developers this is what we should strive for. Finding the simplest solution that achieves our end goal and also allows for future unknown conditions, like the environment change when a train enters a city. Staying away from overcomplicating our code and packing too much in one area is the best method for future expansion.

When we think about solving problems in this way it does require extra work, more thought out actions, but it allows more room for future adjustments.

Questions like, is this the best solution? How does the code I'm implementing affect future actions? What problems does this code cause, when changing it slightly? Here is an example that I experienced when I was learning responsive web design.

In responsive web design, the end goal is to make websites that scale nicely to smaller or larger screen sizes. The most common method for doing this is using Twitters bootstrap library to make the process easier. However, lets imagine I was writing without bootstrap.

I add an image to my page and then begin making the window narrower. As the window shrinks, the image stays the same size. To counter this, I use media queries to resize the image manually at each breakpoint. A breakpoint for this specific instance, is when the image size is no longer compatible with my page.

So problem solved right? I can just write 10 or so media queries and the image scales to how I want. However, even though it has the appearance of responsiveness, we are only setting ourselves up for future issues. Now lets say the original image was not right, we want something bigger. A lot bigger.

We resize the initial image and oh would you look at that. Everything is on fire. The previously set media queries are now off by the degree we changed and the only way to give the appearance of responsiveness is to manually reset the values for each media query.

Now this is only a single image, what if a week later I needed to change five different elements. Now that's a huge task, many lines of code, hours of tweaking, and all so a week after that we can repeat the process. Well, thank god for bootstrap, and other built in responsive functionality we can take advantage of.

Hopefully, the idea of spending hours and hours in an infinite loop of minor changes because we didn't properly think through future expansion, scares the hell out of you. So spend some extra time prior to touching the keyboard, think it through, and try to remember in software development the first solution you think of isn't necessarily the best choice.

My First Javascript Project

Well, it’s nearly 1 am, and I just finished posting my first project to GitHub. I have a lot of potential code that I could pull from to start adding more projects to GitHub, but I’ve only recently learned how to work the software. Alright, so first project posted, it’s still a work in progress, but I wrote all of the code for this application today. The weirdest part, I wasn’t using android studio or java. I was using javascript, which I’ve only touched for the first time a week ago.

Earlier, I had this feeling that I should continue with the web development course I’m taking on Udemy.com. So, I followed the feeling, jumped on and started the next video. When out of nowhere, I was like “well, if I use what he just explained. I could start doing some of the basic logic for a blackjack game.” All though, I’m going to give myself a lot of credit, because I was pulling from a lot more than a couple lines of basic javascript, the instructor was teaching.

I was using similar code, I had used previously with Java. The entire time I was coding, I kept feeling surprised when the code would work. It was like, each problem or bug I encountered didn’t discourage me from continuing. The problem of hitting a barrier, then stopping, has plagued me in the past. Regardless, I didn’t stop. I kept going, and even though it’s still early, I feel proud that I made so much progress in a completely new language.

The project I’m working on is blackjack, which I always play when I go to the casino. I’ve always thought it would be cool to build out, all of the casino style games, and play around with them. Only now do I believe I will actually get there. Anyways, I made some decent progress today, and I have to say I’m a huge fan of javascript now.

If you’re interested in seeing my code, you can follow my GitHub link at https://github.com/Znergy

Just click “Blackjack-Game”, to see my html, javascript, and the Readme file.

The Github Meetup

I went to a meetup about Github yesterday, and learned a lot more than I expected. The meetup was held at an old fully restored hotel in downtown Portland. It was interesting because the elevators were skinny, resembling a rectangle more than the usual square shape modern elevators have. Regardless, I crammed myself in with another programmer and we headed up to the third floor.

The meetup event organizer was Tech Academy and the host was from Code Oregon, they had part of the third floor reserved. As I was walking in, a cart full of pizza rolled right by me. I have to say, any meetup with pizza is infinitely better than a meetup without pizza. People were already starting to take their seats, and everyone seemed to be meeting each other. One thing I definitely need to improve on.

After, we all got our fill of pizza and soda the presenter was ready to start. A guy named Michael, started us off. We dove straight into Git and Github. Apparently, there is a difference between Git and Github, by the name I just assumed they were one in the same. However, Git is the actual version control software. Where as, Github is a “social media platform for code”.

Alright, so what is version control? Version control is the task of keeping a software system consisting of many versions and configurations well organized. Basically, if you have a file, and you upload that file using Git. Git will track the file, and report anytime changes are made to that file. Meaning you can work by yourself or with a team and be able to track the changes everyone makes.

Now the fun part is Github. With Github you can upload your projects, create a portfolio using markdown language (aka Readme), and make all your code visible to future employers or anyone else for that matter. Michael told a story about a kid who was going to these meetups and was actively using Github to help contribute to open source projects, and one day this kid got a phone call from a company out in Colorado. The company offered him a system admin position for $55k, and it was all thanks to his GitHub account. When a company cold calls you, that’s when you know you’re doing good.

Another thing that’s cool about Github, you can follow other coders. Let’s say your favorite language is Java, well you can find some google engineer who codes in Java, and look at his work. I’m sure you can reason why that would be extremely beneficial, but I’ll tell you anyways. First, it allows you to see quality code from working software engineers or developers. Second, it’s free. You’re allowed to pull down the code from Github, and mess around with it.

The technical side of Github, I’m still learning myself. When I start at Epicodus, here in 10 days. I’ll be diving really deep into using Git through the terminal or command line, but for now I’ll probably stick to the Github desktop client. If you’re interested in messing around with Github and posting your own projects or playing around with the version control software, follow this link to download the desktop client, https://desktop.github.com/.

Anyways, it was a fun meetup with a lot of interesting people and topics. I even got in front of all of them for a brief minute to talk about my greatest weakness. Overall, I would say that I’m a fan of Tech Academy and Code Oregon, and I’ll definitely be back. If you’re in Portland, I would check them out at https://www.meetup.com/CodeOregon/. Thanks, for reading.

Coding Bootcamp

The next 6 months..

Starting Feb. 7th, I will be attending a coding bootcamp for Mobile Application Development. The bootcamps name is Epicodus and it will be held in downtown Portland. Epicodus is known for implementing a growing style of programming, called peer-programming.

Peer-programming, is when two programmers work together, to increase efficiency and reduce errors. The best part about going to a peer-programming bootcamp, is having to constantly communicate with other campers, and having to adapt to my partners skill level.

Every day, I will be partnered off with another camper, and that implies at some point I will be partnered with someone more knowledgeable and less knowledgable then myself. I like this idea for a couple of reasons..

  1. Explaining code to someone else will be a valuable skill later on..
  2. If I get stuck at some point, my partner may be able to bail me out, explain why something is done, and hopefully fill that gap in my understanding.

Now, at the time of writing this post, I’m a couple days from starting my Epicodus journey. However, there has been obstacles. The most prominent one, and the one that never seems to stop is money. The reason why I hit this obstacle so hard and without time to swerve was due to a lack of knowledge.

I’ve never had to be so diligent about my finances, and how I spend my time. Because I’ve never done anything like this before, and no one I know personally has. People talk about mapping their own course, well I’m really trying to do just that. A few days ago, I gave this entire commitment (time/money) a lot of thought. The conclusion I came to is simple. I want more from my life, and I’m tired of waiting for it to happen.

My advice, for attacking the money obstacle..

  1. Be very thorough in how you calculate your upcoming expenses.
  2. Always add room for unexpected costs.
  3. Don’t assume anything until the money is actually in your hand.

I thought I had been thorough, then my financial aid ended up being 1/3rd of what I got the semester before. That was tough. When I tried to adjust to the amount I was getting, it no longer worked. However, the next day brought a lot of positive encouragement.

When I woke up, I still felt pretty depressed. I mean someone could say, well you don’t need a bootcamp to be a software developer. That’s absolutely true, but I wanted to commit myself. Not hope that later on, I would find my way to the goal line. Well, my phone rings. It’s my old boss, she tells me that they are moving forward with rehiring me and the paper work is being finalized.

Armed with that new information, I started readjusting my finances, and although I didn’t have the next 6 months worked out. I was able to lock up the money for the first quarter of the bootcamp, and put a pretty big dent in the rest of it. Good, mission accomplished.

I’m telling this part of the story, because I got thrown a curve ball, and you will probably will too. A six month, 40 hour a week, bootcamp is going to challenge you. Adapting to those challenges, then overcoming them are powerful skills to develop. Lastly, I’ll leave you with some wise words..

“Everyone has a plan until they get punched in the mouth” – Mike Tyson

My First Hackathon, Part Two

Hackathon Continued..

Continuing from where I left off, the hackathon just started and I’m now on a team with some computer science students from the University of Dallas. There are hundreds of people talking, laughing, and interacting with each other. The hackathon is only about a hour into it at this point, and the announcements are about to start.

A representative from the hackathon then came on stage, and listed off a whole slew of tech companies that were in the building. The biggest one being IBM, they brought free Rasberry Pi’s for everyone, and were giving tutorials on using IBM Watson to help solve problems.

Interestingly enough, I met the main guy from IBM while I was standing in line for mexican food and we chatted about how long he’s been at IBM, what the coolest projects he’s seen built using IBM Watson in a 24 hour period, and where he’s traveled doing hackathons. Apparently, IBM has sent him all around the world showcasing IBM’s tech, and helping host if needed. He told me about the coolest project he’s seen built in 24 hours, the project utilized IBM Watson, and also worked as a smart solution for the city.

The project this team built allowed people to take photos of any fire hydrant and then that image would be parsed through IBM Watson, which would identify issues with the fire hydrant, send a repair order, and once the repair order arrived, the route to the fire hydrant would be mapped using the fastest possible route. Once, I finished asking him questions and trying to network a bit, a voice came over the mic for the general announcements.

The announcements were mostly introductions about who was hosting, what they do, how they came to be, and what they can help young or experienced developers with. However, once they finished the really cool presentations started, where anyone who had an idea or anyone who was looking for a team could come on stage and speak.

There were many people who took the stage to explain themselves with the hope of making connections and/or trying to build a team from scratch to create something cool. The first person spoke about a money payment app, which would allow the user to utilize something like Android pay, but make the interface easier to keep track of all payments, then use that data in meaningful ways. The second person that came on stage was a local business owner who was looking for programmers to help build a product, the idea slips my mind. However, he was hiring and anyone who could help out would stand a chance at being hired (super cool).

One of the biggest things I learned, hackathons can land you a job. After, hearing so many business owners approach me and my team, as well as listening to them speak on stage, it was pretty clear that hackathons were amazing places to get your foot in the door with a local company. The whole idea behind a hackathon is to build something meaningful in a short period of time, and that is not easy to do. Which means simply presenting your finished product can put you far above the competition.

For instance, let’s say 120 developers show up for the hackathon on day one, but by the end of the hackathon only maybe ten teams have a project to actually show off. These are great odds to be the center of attention for some amount of time and with the crowd filled with hiring managers, start ups, and other unforeseen opportunities you can imagine why honing your hackathon abilities would be beneficial. Alright, the announcements, team organizing, and project pitches are over. Time to find a spot, a long night of hacking is about to begin.

We shuffle past the crowds of developers and find a spot in the very back. It’s perfect. There are outlets for charging, plenty of desk real estate, and the space is quiet. We moved out early from the presentations to find this spot, and it was definitely worth it. Our workspace is taking care of and the next logical step is to brainstorm until we settle on an idea.

The brainstorming session kicked off rather slow, but once we all started throwing out ideas we were making progress. However, one issue arose, the ideas we were talking about weren’t completely relevant to the hackathon parameters, so we decided to stick to thinking about smart solutions for the residents of downtown Dallas. Well, what are smart solutions? Smart solutions, would be any way that enhances a residents life or improves the city in some way, usually consisting of some type of IOT solution. For example, a light pole only has a single purpose, light, but there is a lot of unused space that could be rigged with a whole slew of cool features like wifi, electric car charging, etc.

Well we know the direction, smart solutions for downtown Dallas, now we need to get some inspiration. Well, one of my team members suggests walking around downtown to find that inspiration or at least get a closer look at what could be improved upon. Such a great idea. There we go, onto the elevator, out the front of the building, and into the cold wind chill to seek smart solutions and inspiration.

Alright, I thought this was only going to be two parts, but I would like to address in more detail what happens when we head downtown. What I learned, how much more prep I should have done, and how I’ll choose my team next time. Thanks for reading.