Thursday, August 11, 2016

8/11

Two features added! You can now ask my skill to repeat the step last heard, or repeat the ingredient last heard. Both have been tested, and all changes are up on github. My skill is done! I'm going to submit it to Amazon for review and hopefully it'll soon be a real app!

Wednesday, August 10, 2016

8/10

My cooking test went very well today. I'm happy with how my skill has ended up, but I did realize I never added a feature to repeat or go backwards a step. I added this today, but I'm having a few issues with it, so I'll continue to work on that tomorrow.

Tuesday, August 9, 2016

8/9

More testing of my skill. I switched back and forth between the two methods for finding a specific ingredient (one of which is more simple and one of which uses fuzzy matching) and both are working very well. I've stuck with the first one, because It's a lot more simple and I don't think there are many differences. I was testing through the AWS console and through my Alexa at home and I'm pleased with how this skill is shaping up. I think most of the bugs I was finding earlier really had to do with the shortcomings of my ingredient text file.

There will obviously be bugs that will arise, but I tested about 10 different recipes (ranging from simple to complicated, recipes that used name brand ingredients, savory dishes, and sweet dishes) and all of the ingredients were found without a problem.

Tomorrow I'm going to cook again using my Alexa and make sure there aren't any last flaws, but I think other than that, I'm done with my project! I'll blog tomorrow about my cooking test and unless I find something that needs fixing, I'm going to call it good and try to submit my skill to Amazon!!

Monday, August 8, 2016

8/8

I've finished processing my new ingredient file and I think it's a lot better than my previous one! There are a lot more ingredients and I spent a lot more time getting out the filler words that only mess with getting the ingredient. During my testing today, I already notice it having better results.

I also have been working on the logic in my code. I'm getting rid of plurals and I'm going to add a few more loops in to ensure that if they ask for an ingredient that's in their recipe, it'll actually be found!

Friday, August 5, 2016

8/5

Woke up at 6 am this morning with a vision towards fixing the ingredient issue! I'd been working on splitting up the different words in my current ingredient file so it would fit a more broad range of my recipes but then I realized that I could just go through each of my recipes and get all the ingredients to ensure that I would have them all. I used multithreading to connect to every recipe in my MASTER_RECIPE.txt file and have now gotten a list of all their ingredients. Now I just have to process it down to get rid of the numbers, non ingredient words, etc. Luckily, I still have all the logic written from the last time I did it. I also came up with a way to search it better, so hopefully it'll soon be working for every ingredient!

Thursday, August 4, 2016

Wednesday, August 3, 2016

8/3

Worked on the ingredient issue today. I tried to look for any other alexa skills that used recipes, hoping that they would have either their ingredient slot list available or at least a source for where they got theirs. I only found one, and they had only hard coded 10 recipes. I'll just keep thinking about how to solve this problem, especially using the advice from the previous comments on my blog.

Tuesday, August 2, 2016

8/2

Today, I spent a long time working on my documentation and readme. I hope that these will be up to scratch for submission and for helping someone else understand my code in the future. I've gone through and added a block of comments at the beginning of each class with a detailed description of what it does and how it ties into the scope of the other classes (if applicable). As per David's advice, I tried to write each with the mindset of not being familiar with the project.

I also went through and cleaned up what was in my github. I deleted the recipe output files, as the content had somehow been deleted anyways. I also deleted a few other folders that had just been uploaded sometime in the past.

Finally, I spent a lot of time on my readme. I added an overview and a description of each class and the organization. I also re-formated so it's easier to read. At the bottom I added a section about problems with my program and any loose ends.

Tomorrow and probably up until the end of the project period, I'm going to continue working on the ingredient issue!

Monday, August 1, 2016

8/1

More cleaning of my code. I've nearly finished all documentation and I've added a few more features to make it run smoothly. I changed it so that when you ask for a specific step, if you ask for the next step, it'll give you the step after the number you previously asked for.

I've also had Alexa end the session more frequently to stop the issue of switching between recipes.

I've continued to work on the ingredient recognition, but it's becoming more and more difficult. I'm happy with my method to find the recipe from my ingredient list, but my ingredient list is not up to standard. When I originally made it, I went through hundreds of recipes and processed unnecessary words out of them, but the list still isn't concise enough. I've tried finding a large list of common ingredients on the internet but it's nearly impossible to find. The main issue with my list is that although Zucchini may be listed somewhere, it's probably surrounded by words that make it no longer match the majority of recipes. For example, large zucchini quartered was on my ingredient list. If the recipe called for only Zucchini, it would return that you don't need large zucchini quartered.

I've attached a screenshot of one section of my ingredient list. As you can see, the filler words are widely varied and numerous. Not quite sure how to best get rid of them all, except for brute force. I've done some work on it today, but after 30 minutes of manual deletion, I was about ready to pull my hair out! Any suggestions for this?

Thursday, July 21, 2016

7/21

More skill testing today! I had my friend cook using Alexa to get a feel for how user friendly it would be. She knew very little about my app and had never worked with an Alexa before.

The biggest problem we ran into was that Alexa kept changing recipes or reseting. This is due to the fact that I currently have Alexa continuously listening for intents. I thought this would be the most helpful, since it enabled you to ask questions quickly ("Alexa, what's the next ingredient?" over and over again without having to ask Alexa to open RecipeHelper) but if we carried on with our conversation after setting the recipe, she would mistake it as a command. She would randomly switch recipes or reset the recipe depending on what she thought she heard us say.

Other than that, my friend thought it was pretty seamless. She could ask for each step and within that step, ask for the quantity of the ingredient (every ingredient was properly found except zucchini!).

I think I need to start looking at this app through the eyes of someone who will actually use it, which will probably be as an aid to the recipe itself. I'm going to have Alexa end the session unless a response is needed and I'm going to connect asking for specific steps to the pagination, so if you ask for step three and then ask for the next step, it'll take you to step 4 instead of step 1.

Just a reminder, I'm going out of town tomorrow for the entire week. I'll be on the beach so I'm doubtful that there will be good internet, but I will take my computer just in case. I don't plan on working, but I might continue with cleaning up my code and writing documentation!

Wednesday, July 20, 2016

7/20

I kept working on fuzzy matching today. This was a lot of trail and error. I tried using getLevenshetinDistance and getJaroWinklerDistance but neither worked as well as what I currently had (two passes through my ingredient list, one looking for an exact match and one looking for something that contained it).

I ended up finding a better combination, however. I pass through once to look for an exact match and then I pass through looking for the highest result when comparing with getFuzzyDistance.

However, this created a new problem in which 'null' was never returned (meaning Alexa would never say "you don't need that ingredient". If I asked Alexa "how much pig do I need" it would return all-purpose flour, the highest ranked in fuzzyDistance. To fix this, I've added one last search at the end to make sure the result being returned at least contains the passed in ingredient value. This leads to a few weird cases not working such as asking about "oats" if the recipe specifies "oatmeal" (which worked without this check) but I think for the most part, it's getting more accurate.

Tuesday, July 19, 2016

7/19

Today I tested my skill by cooking granola bars without any reference to the recipe and I thought it went really well. It flowed easily and I had no issues until my internet cut out at the very end! The only thing that is still obviously wrong is the ingredient search aspect. I haven't really worked on the fuzzy matching issue yet, and it's really the downfall of my skill.

However, I think I've found a good way to solve this! I'll be using Apache commons text's fuzzyScore. I'm stuck right now because my maven says it can't find the dependency but I know this will resolve within a day.

A few more features I think I'll add will include being able to repeat a listen step or ingredient, as well as using the app feature more. Perhaps I'll have Alexa send the ingredients to the app so you can easily see them or know what to buy at the grocery store. all in all, I'm pleased with how my skill is turning out!

Monday, July 18, 2016

7/18

Today, I added a few new features to make my skill flow better. I added the feature to ask for the next step using "next step" and then also added an intent which would ask the user if they meant the next step or the next ingredient if they just said "next". I also added a secondary menu so after you ask for a particular recipe, it tells you not only what you're cooking (this helps with vague requests, such as asking to cook cookies, since you can hear exactly what recipe Alexa has chosen for you to cook) and gives you a list of options to ask about. This is a lot more user friendly than just starting to list all the steps.

I'm going to cook with Alexa tomorrow and take notes and have a family member do the same later in the week. I've uploaded these changes to GitHub and have also updated by ReadMe.

Thursday, July 14, 2016

7/14

Today, I fixed some more issues when trying to find the next ingredient. It wasn't able to restart, but I finally got it to work smoothly. However, Alexa is ending the session after reading each ingredient. I think this should be a simple fix, so I'll get to that next week. I also worked more on simplifying my code, fixing punctuation, etc.

Wednesday, July 13, 2016

7/13

More de-bugging today. I fix one thing to find that another thing has stopped working or broken endlessly. I was having issues with my dynamo adding backslashes and quotes in front of the title every time my ingredient index was incremented, so I tried making the ingredient index a separate data field. This has somewhat worked but took a big chunk of time.

I'm also having problems with punctuation. When I ask Alexa to read me the steps, she reads the periods as "dot," and other things like this. My biggest problem at this point, however, is that I don't know how to make this app extremely user friendly. When I ask her to make a recipe, she immediately lists the steps, which isn't helpful. However, I'm not quite sure what would be more helpful here. Another list of options could work, but when I tried playing around with this question and answer type of thing last week, I kept confusing the logic and she ended up ending the sessions or returning a bad intent error.

I'll work on this more tomorrow and later this weekend, but I won't be able to work or blog Friday since I'm going to a family reunion.

Tuesday, July 12, 2016

7/12

Today I started working on some of the bugs in my code. I had some weird issues with punctuation but I'm pretty sure I've worked that out. I spent the rest of the day introducing pagination to my ingredients. You can now ask for ingredients one by one. I'm thinking about doing this for the directions, too, but I think it might be repetitive since you can also ask for them one by one "what is step one?, what is step two? etc"

All changes have been pushed to my github!

Monday, July 11, 2016

7/11

Today I wasn't able to get a lot of work done. While on the plane, I started going through my code, cleaning it up, adding documentation, and working on expanding my list of sample utterances.

Thursday, July 7, 2016

7/7

Today, I worked on a lot of bugs in my code. It now remembers your recipe completely!! You can ask "How do I cook pancakes?" and it will give you the response. Then, you can ask "what is step three" and it recalls step three for pancakes. I also have it working for specific ingredients and all the ingredients.

I'm having some weird bugs with the formatting changing once the data is saved to Dynamo and recalled. My ingredients come back with extra spaces, commas, and brackets despite my efforts to get rid of them. However, I had to spend a while getting it the point where I could split it into different steps and ingredients (as I split it on commas or periods, and Dynamo would sometimes erase these) so I'm happy to have more punctuation than less at this moment.

I'm sure the next few weeks will be this over and over again, testing, finding errors, trying to fix, etc.
I also really need to widen my intent schema and sample utterances, I'll start this tomorrow while on the plane! Also, my newest code is uploaded to GitHub.

Wednesday, July 6, 2016

7/6

I got my code running through Alexa! However, there are still a lot of bugs. Somewhere in my method calls, I'm reseting the recipe at the wrong time. Once I request one recipe, it saves in my Dynamo, but if you ask for a further step or ingredient, it acts as if there isn't one. I'll continue to go through and de-bug tomorrow. Also, this Friday I'm traveling and may not get the chance to work or blog!

Tuesday, July 5, 2016

7/5

More efforts to get my code working with Dynamo today. With so many new storage components required for DynamoDB, I'm feeling a little lost in the woods with where things are going wrong. It's hard to test through Lambda now, since my code requires a sessionID, requestID, appID, and intent. This means that it's more difficult to know exactly what's going wrong. So far, nothing is working through Alexa. I spent quite a few hours tracing what is called in my code and trying to figure out where it's going wrong by using tons of print lines throughout my local code. 

In the last few hours, I've successfully gotten it to return the proper steps for a given recipe LOCALLY, but it doesn't return it to Dynamo yet. I was having some issues with the way I was writing to it (using DynamoDBMapper and DynamoDBMarshalling), and I haven't looked into that again since.

I've attached as screen shot of my console for the intent of getting the direction list. As you can see, there's a lot going on, a ton of methods called, and a ton of places for me to get confused. It's interesting how many times the same things are called. I'm fairly certain that my code matches the Amazon example in terms of what is called when, so I would be really curious to see if there code also repeats this many times. Maybe it's because my code is struggling to be flagged as "null"? I think this is closely related to the writing/reading through Dynamo issue which I will continue to work on.



Friday, July 1, 2016

7/1

I got my program writing to Dynamo! Now I just need to go back and make sure all my intent's know how to get the information that is written to it (since at this point, nothing is working). However, I think this was a good point to get to this week and after the holiday I'll sit down and hopefully get my intents working!

Thursday, June 30, 2016

6/30

More of the same! Trying to get my Dynamo to work. It's not writing to the table as it should be but I'm sure I'll find the mistake eventually.

Wednesday, June 29, 2016

6/29

I've finished re-organizing and integrating all the DynamoDB things but of course it isn't working... I'm trying to find tutorials and forums about Dynamo with Alexa skills but it's not heavily documented. The only place I can find an in depth one is on the Amazon GitHub with Java tutorials, but like I learned at the beginning of this project, those are vague, out-dated, and don't work very well. Hopefully I'll find a second source soon.

Tuesday, June 28, 2016

6/28

Today I started adding all the DynamoDb code into my existing skill. This is requiring me to re-organize my existing code and change more than I thought, but I made a good start and have a clear idea of where to go.

Monday, June 27, 2016

6/27

Today I spent a lot of time thinking about the most user friendly way to save session state. There's a built in and straight forward way of remembering the session within my code, but whenever Alexa times out, it'll wipe the current session. I think I'll end up using DynamoDB (which I had initially thought I would use). This way, when a user asks to make a certain recipe, I can have all the ingredient and direction data save to a new table. Even if the User spends 30 minutes on one step, they'll be able to ask for the next step. If Alexa has timed out, I'll have her start by asking if they would like to continue with the recipe currently in Dynamo, of if they would like to start over.

It might take a little while to get everything working with Dynamo, but all the forums I've been reading have said that this is definitely the way to go.

Friday, June 24, 2016

6/24

After cleaning my project, I couldn't get my uploaded package to recognize my recipe and url file anymore. Although there are countless stack overflow forums on this, it took me hours to get it working! I spent forever going over different solutions, different ways to try importing the file, different ways to attach it to my pom.xml, different places to put the file, etc. I'm going to upload these changes to github and hopefully it'll work for more than just me!

EDIT: I went through and tested what change actually made it work. I had properly included the resource, I just wasn't reading form it properly. I had previously accessed it by using

InputStream is = RecipeSetup.class.getResourceAsStream("MASTER_RECIPE.txt"); but this did not work. I think it's because I was supposed to use a getClass method on my main function, but I wasn't calling it from main. Instead, I needed to get the classLoader using:

ClassLoader loader = Thread.currentThread().getContextClassLoader();

InputStream is = loader.getResourceAsStream("MASTER_RECIPE.txt");

Thursday, June 23, 2016

6/23

I spent a good chunk of today trying to figure out why David can't get my code to find recipes but I have no idea what could be wrong... I'm finding it's pretty difficult to fix a problem that I can't replicate myself!

I started to look at the Alexa samples which saved state using Dynamo or S3 and I'll start integrating this into my code soon. I had the thought that I wanted to make sure everything was completely user friendly before doing this, but after making cookies using my application, I'm convinced that the only way to make it user friendly is to save state.

I got so bored of asking "recipehelper" and specifying the recipe "urban legend chocolate chip cookies" with every single request. Sometimes, I would mess up the title or jumble the whole request and Alexa would get confused- which got annoying after the fifth time it happened.  I was surprised at how well asking about quantity of ingredients worked (except butter, which kept messing up) but asking for specific steps was a challenge as Alexa kept hearing the wrong number.

I now have 50 delicious cookies and have better insight into how to make my app better! hooray!

Wednesday, June 22, 2016

6/22

Today I worked on the bugs with Alexa trying to find my recipe titles. I'm having a lot of weird issues and despite going through and heavily processing the files (to ensure there were no symbols, numbers, and to make sure that it matched the slot recipe names exactly) Alexa still isn't finding some of them. I also have made sure to convert everything to lower case. When searching "chinese style baby bok choy" it says that it wasn't found in the map (created from the text file) but if you search "bok choy" it will return the correct recipe. I'll continue working on this interesting problem.


EDIT: After "cleaning" my files in Eclipse, it's working!

Tuesday, June 21, 2016

6/21

I didn't work on my project today but I did fill out the Google Summer of Code midterm evaluation! I'll be back to working tomorrow morning.

Monday, June 20, 2016

6/20 STAGE 2 COMPLETE

Another huge milestone completed!
I have all of my intents working with my entire list of recipes (not just one hard coded one). All new code and resources uploaded to GitHub

There's still plenty to do, however. I need to add in all sorts of fuzzy searching for ingredients. For example, when I ask about how much 'milk' I need for Pancakes (which is explicitly listed in the recipe) it responds with "you need 1 cup of milk", but asking about 'whole milk' responds "You don't need whole milk for this recipe". I would like to at least have it respond "I couldn't find whole milk, but you need 1 cup of milk" if not automatically responding about milk in general.

I also have been testing random recipes from my slot list and some of them aren't working. I'll have to look into this. As ironic as it is, I couldn't get any of my chocolate chip cookie recipes to respond, since the name usually has weird variations (Anna's Chocolate Chip cookies, Nestle Chocolate Chip Cookies I, etc). I'll probably implement the same fuzzy searching that will be used for ingredients.

In the next few days I'm also going to test out the skill by having my Alexa assist me in cooking so I know what I need to fix about the user experience.

And, of course, I'll work on saving the current session so the steps and ingredients can be read in order with the users prompting and without repeating the current recipe title.

Sunday, June 19, 2016

6/19

Came across a pretty large problem today when realizing that I needed to create a "slot" object for all my ingredients. This was easy when I had only one chocolate chip cookie recipe, but now I'll have to go through and get all the ingredients for each recipe, process the list to remove any numbers, symbols, measurement words, etc, remove duplicates, and create my slot object this way.

I did 10 pages of each category to create my ingredient slot and I'm pretty sure this should be a big enough range for every possible ingredient. If I come across problems I can always widen that later on.

I'll also have to use some sort of selection strategy and have Alexa use fuzzy searching around the ingredient slot since not all of them are perfect. For example, a few ingredients are 'bottle salad dressing',  'limes juiced', etc. However, if the user says "limes", I'm hoping that Alexa will be able to search within my specific recipe's ingredients for anything with lime or juice. This could create some problems later on, but this was the best solution I could think of for dealing with this problem.

Saturday, June 18, 2016

6/18

Today I remembered that in order for my file to be uploaded with my text file, I need to add it as a resource in Maven. After this I had to read up on opening text files from resources, reading from input streams, etc. Alexa still isn't finding my text file and isn't working right, but when I look at it next I hope I catch a simple to fix mistake that I've been overlooking during all these changes.

Friday, June 17, 2016

6/17

I had a weird day full of out of the ordinary activities and was unable to work today! However, I'll try to work and blog tomorrow.

Thursday, June 16, 2016

6/16

Today, I continued to work on adapting my existing code for the new recipe selection. It's not working through the Alexa yet, but I have two of the four 'features' working locally (when I pass in the "intent"). I can't figure out why it isn't working through the Alexa but I'm sure I'll figure it out tomorrow.

Wednesday, June 15, 2016

6/15

As I mentioned last night in my edit, I uploaded all my code and my recipe files! I also created a file with just the recipe titles and processed it to get rid of all symbols and punctuation so AWS would accept it as a slot. The rest of today was spent working adapting my code to start working for multiple recipes instead of just the chocolate chip cookie.

Tuesday, June 14, 2016

6/14


After spending hours scraping the same page over and over again (such a dumb mistake), I decided in the end to use multi threading! I officially have my master recipe file in a .txt that is properly formatted for the next steps. I'll push the code and files to github later tonight and tomorrow I think I should have Alexa giving recipe directions for any recipe on my 311 page list! Hoorah!

Edit: I've now uploaded both the individual category files, the code for the processing, and the master recipe file to my GitHub. I also re-processed to delete duplicates (recipe name ii, recipe name iii, etc) which Alexa would not have been able to process.

Monday, June 13, 2016

6/13

As I write this post, my computer is slowly processing 30 pages of recipes from each category. It's taken way longer than I could have imagined going through each recipe to grab the title and URL but It continues to add more and more recipes. It took me a while to set up the proper try/catch blocks for each new URL change and to get rid of the HTML errors. I thought about using multi-threading to speed this up, but since my internet has been very touchy in the past, I figured that slow and steady was the way to go. I'm pretty sure by the end of the day I'll have my list of all recipes and their URL's. From here, I'll add the new slot type to the Alexa and with a few tweaking, should have it working if a complete title for any specific recipe is given.

Friday, June 10, 2016

6/10

Today I wrote all the logic for going through all the categories, going through 30 pages of each recipe within each category, and then getting the title and complete recipe URL and writing it to a map and then to a text file. I also wrote the logic for going in and grabbing each ingredient, direction, etc. Once the error goes away, everything should work and I should be very close to my second milestone!

Thursday, June 9, 2016

6/9

I didn't get a lot done today since I've still been getting those errors, but I plan on working through that issue with my brother this weekend. I worked on organizational things, such as getting the code that will write the map, the text file, the objects etc, ready for when those errors go away.

Wednesday, June 8, 2016

6/8

Today I got a lot done but have also started to get stuck. My initial problem this morning was that the recipes were being double counted (each recipe link would print multiple times in a row to the output .txt file). I fixed this by creating a map of my recipe names and URL's, but then I started to get weird error messages and timeouts.

The most common error I'm getting is an IOException about too many redirects from HTTPConnectionResponse. I didn't change my code too much from this morning when everything was working, so I'm pretty confused. I found this stack overflow forum about it, but I'm not sure how to use this to fix my own code, as I'm not explicitly using HTTP. I'm hoping this is more of an internet issue that will disappear tomorrow.

I've decided to cap the recipes I use at 25-30 pages of recipes per category. If I ever stop getting runtime errors, I'll go through all of them, add it to a map, and then print the map keys to a text file. This text file will be used to help build my slots and intent schema. Then, whenever the program is re-run, I simply need to re create a map from the text file. When someone passes in a recipe intent, I'll find that recipe in the map, go to the URL, and create the ingredient, step, and recipe object that are needed for my skill.

Tuesday, June 7, 2016

6/7

Got Jsoup working within AllRecipes and have successfully navigated through the categories to the recipes within!

I also have it working within each recipes to grab the title, ingredients, and directions.

I'm not sure it's grabbing all the recipes however, I think my computer might be timing out or it's only taking the recipes that are on the first pre loaded page. I'll keep playing around with this.

I'll also take a look into hRecipe, although I'm hoping it's something that I'll be able to integrate into what I already have, since I've gotten this working relativley well.

Later tonight and tomorrow I'm going to start building recipe, ingredient, and step objects and continue to make sure each recipe is grabbed.

Monday, June 6, 2016

6/6

Today, I've continued working on web scraping. I discovered that the github I was going to reference was 4 years old and didn't work on AllRecipes anymore. I'm going to keep it as a reference for organization, however. I also decided to use AllRecipes.com instead of Epicurious, since Epicurious had too many ads, unrelated links, and JavaScript that were interfering with navigation.

I've been looking at tutorials on using Jsoup with Java. The most helpful was this one which allowed me to successfully grab the name and URL for each category on AllRecipes. However, I got stuck when trying to navigate within each category. I posted a comment on his page and will talk to my brother tonight about advice on how to proceed.

I'm sure problems will arise this week with formatting, splitting ingredients, getting the proper names, etc. but after spending a few days on it, I'm sure things will come together. I'm also starting to think about how I'll let the user know what recipes they can choose from. Maybe later in the process I'll start to integrate the app features more so I can list all the available recipes.

Once I successfully scrape the recipes, I think more progress will quickly come.

Thursday, June 2, 2016

6/2

Today, I started looking into different programs for scraping websites for recipes. I think I've decided on using Jsoup and began looking at different tutorials and guides. This one will help me with the first few steps. I also found a github that used Java, Eclipse, and Jsoup to scrape for recipes. Although they used the information for a Google spreadsheet, it'll still be a good reference for setting up the parsing.

Wednesday, June 1, 2016

6/1 STAGE 1 COMPLETE

I have a complete skill running through Alexa! If anyone wants to test it, I've uploaded the code and steps to test it through AWS https://github.com/hpedskis/google-summer-of-code

Some Issues still:
-It's not completely user friendly. If you ask how to make cookies, it just reads through all the steps. You can specifically ask "what is step 1", etc, but I'm eventually hoping for a "to hear the next step, say next" output.
-I haven't taken the time to write out enough sample utterances (there is a very limited way you can ask for each step)
-Not all bugs are worked out, for example, if you ask about sugar, it only answers about the quantity of brown sugar instead of regular sugar. This is because I haven't found a good way to split up the ingredient name and quantity yet, so I'm simply doing a .contains search in each ingredient line.

Today I worked on getting all the intents working, working with slots, and then creating a detailed read me! Hooray!

Tuesday, May 31, 2016

5/31

Today was another day spent mostly in the airport and in transit, so unfortunately I didn't get a lot of work done. The code I uploaded to GitHub didn't have a hard coded recipe and instead I tried using a .txt file upload with maven, although that didn't work. Instead of this, I went through and hard coded each step and ingredient and got it running through my Alexa. The only intent that is working is the one that reads each step, but I know that after fiddling with the slots (which hold the ingredients) I'll be able to get the ingredient intents working as well. I've tested these locally and know the logic works, so tomorrow I'll be working with the slots and will hopefully be a few steps closer to a fully working skill!

Monday, May 30, 2016

5/30

First working commit is up! https://github.com/hpedskis/google-summer-of-code

It's pretty rough and most of the methods don't work, but it's the first code that I was able to actually upload to Lambda without receiving an error message. After spending about 8 hours working through the different lambda error messages, I learned that the AWS Java tutorial I was using were actually not using Lambda at all, but setting up a complicated server that I hadn't been implementing. I talked to a co-worker of my brother's who had come across this problem as well. He had created a fix to this problem, though it was outdated. However, this gave me the idea to find things similar. I used this tutorial and after hacking the two together, it finally is runnable and testable!

Tomorrow I will be writing more code and will test what I do have through my Alexa, but I see this as a very important milestone!

Thursday, May 26, 2016

Out of Service 5/27-5/29

I mentioned it earlier, but I wanted to specify again that I'll be camping and will be out of service this weekend and will be unable to blog.

5/26

Got a really good amount done today. I restructured my class structure and things are now well organized and running smoothly. I also finished all the methods for my Alexa Intents and have tested most of them locally. Not everything is operating like I want it to eventually, but I realized that I want to be able to get my skill working through the Alexa before working on any small details. I'm not with my Alexa and won't be able to test it until Tuesday, but I'm pretty sure it should be working on one of the first few tries!

Wednesday, May 25, 2016

5/25

Today, I didn't get a lot of work done because I was preparing to go out of town and had an afternoon flight. Also, the next few days I'll be on vacation and although I have the intent to work on my project, I won't be putting as much time in as usual. I'll be working and blogging tomorrow, but Friday-Monday I will be out of internet range. I'll try to do as much on paper as I can during those days!

Even though I wasn't writing code for my project, I feel like I'm getting more and more of a clear focus on what I need to do to make further progress. I'm not sure I'll get the skill working for one recipe by the end of May, but it's because I'm trying to make things easier for myself down the line (instead of just writing in each ingredient and step, I'm writing the code which will find the recipe, split it up, create ingredient and step objects, etc). Although this is slowing things down right now, I think it'll pay off later in the summer.

Tuesday, May 24, 2016

5/24

More slow but steady progress today on writing my own skill. I created my IntentSchema (all the different things a user could ask for) and started mapping them to methods which would give the proper outputs. I have run into a few problems such as only some of my classes being able to access the Amazon speech output and the simple logistics of how a user would ask something, but I'm sure these will be resolved in the next few days.

Monday, May 23, 2016

5/23

This weekend I fought with the Lambda upload and after trying almost every variation of packaging, I found out the problem was a combination of out dated Java and really slow internet connection. Now that I know I'll be able to package, upload, and test my code, I sat down and started to write out my actual skill. I'll be using a lot of the Java Samples provided by Amazon and am currently working on the layout of my skill. I've written down most of the intents and responses and started overriding the OnLaunch and OnIntent methods that are required by the Alexa Skill Set (pretty much defining what will launch the skill and what will happen depending on what the user says).

Thursday, May 19, 2016

5/18-5/19

The past two days I was working more with connecting my AWS and my Eclipse. It's been taking more time than I initially hoped, but the tutorials haven't been super clear and it's taken me a few attempts with each to get everything connected. Today, I was convinced that I had gotten everything finally working but then got stuck again while creating a "hello world" Alexa skill. Hoping that tonight I can get everything completely synced so that I can finally work on getting my hard coded recipe running through Alexa.

Tuesday, May 17, 2016

5/17/16

Today, I wasn't as productive as I was hoping. I got bogged down with updates and plug in downloads, as well as configuring everything so my Eclipse is in line with AWS. I'm now at the point where (hopefully) everything will run from one to the other seamlessly. I'm not sure how much work I'll be able to get done tomorrow but my next step is using the sample code given and making sure that running it from Eclipse will still produce the correct results from Alexa.

Monday, May 16, 2016

5/16/16

Today's Progress:
-I found one recipe from Epicurious (the recipe database I'll be using) and copied the recipe- as it was formatted on the websit- into a .txt file
-I configured my code to properly split the recipe into both an array list of ingredients and an array list of steps
-I thought about the data structure. I'm thinking of creating a "recipe" object with an array list of ingredients, an array list of directions, and a name. Then, using a hash map to hold all of my recipe objects. This way, it can easily be searched for.
-I watched a walkthrough for creating a new skill
-I walked through a tutorial on fully bringing together Lambda and the AWS Developer portal

I was hoping to get my recipe working in Lambda, but am finding that this is a lot larger of a step than I initially thought. I have to write all of the possible 'utterances' and need to create a list of 'intents' (requests that can be handled) and the 'slots' (or recipe key words) that can trigger this.

Tomorrow I'm hoping to start progress on creating these utterances, intents, and slots as well as play around with my own Alexa, which is still sitting in a box!

Sunday, May 15, 2016

5/15/16

Today, I'm getting my footing and beginning to break down my project into smaller steps. I've hard coded one recipe and was playing around with splitting the strings into different lists, making sure each was correctly trimmed and separated.

I also did the AWS Lambda tutorial (for Python) and started reading the page about creating a Lambda function using Java, which I'll be coding in.(https://docs.aws.amazon.com/lambda/latest/dg/get-started-step4-optional.html)

Tomorrow I'm going to decide which data structure I'll be using and how to organize it into different objects. I'm also going to continue with the Java Lambda tutorials and hope to get my hard coded recipe uploaded into AWS to play with the different inputs, outputs, and events.

Saturday, May 14, 2016

Finally Getting Started!

I completed my last final Thursday and have arrived back home. I'm starting all the preliminary items now such as setting up an AWS account, a GitHub account, and taking notes on the Alexa skills API page.

Goals for the weekend:
-set up all accounts
-create a more detailed plan (such as weekly goals and milestones) for the next weeks
-create a list of questions to email to my mentor

Initial Questions:
Is there any specific repository I should be using on GitHub? I haven't found any mention of this on GSoC's website/FAQ.

Wednesday, May 4, 2016

5/4/16 Update

As I mentioned in my previous post, I've been busy with finals. I just want to make it clear that I won't be starting my project until 5/14 when I'm back home and my semester has ended. Therefor, I won't be blogging unless anything new comes up! (unfortunate but necessary :( )

Yesterday, I had my first phone call with my mentor. It was an exciting first step and we briefly discussed the goals for the summer. Can't wait to get started after finals!

Monday, May 2, 2016

Initial Thoughts

Although I've been busy studying for finals and have had little time to really begin my summer project, I have been thinking about a few initial to-dos.

Luckily, Amazon has made it very easy to create new open source skills! One article I began to read was this one, which is a general overview on starting to create a new skill for the Amazon Echo.

I've also been doing more research into the recipe database I'll be integrating for my skill. Luckily, there seems to be a lot of options (see the first response on this forum). I'll need to take a look closely at each one but http://www.therecipedepository.com/ and http://www.epicurious.com/ both seem straight forward and simple enough to scrape and parse through initially.

That's all I've looked into for now but I'm excited to continue working on this project in the next few weeks.

Sunday, April 24, 2016

Welcome To My Blog!

Hello! This is my blog where I'll be talking about my progress and other related information about my Google Summer of Code project. Stay tuned for more!