Team joda (SoundDrop) [2016]

We're Johanna and Dayana , hence "joda" but also alluding to Yoda- "May the force be with us", and we will be working on SoundDrop, a project that allows the user to record stories and connect them to a place where they belong, thus leaving an audible mark. We're very happy to be RGSoC students and to have this amazing learning opportunity! We're based in Berlin and our coaching company for the summer is Absolventa.

Mentors

Supervisors

September 30, 2016

Today was our last day and it felt weird: Sort of like finishing school. We’re happy we have achieved this much, but are also sad leaving our code summer behind. We have learned a lot, but there is yet more to learn. We’re very thankful for all the help we have had and will continue learning and coding 😀

Our last day : 😢
Met with Tam and talked about our last contribution within Summer of Code✅
Showed her the treasure hunt that Absolventa coaches prepared for us✅
Talked about “The Future” - What comes next?✅
Power Hower: Learned about Linter Rules✅ and about reactive programing✅
Finished preparing talk for Goodbye Party✅
Finished styling the API explorer✅

We will miss all of the amazing people we met during RGSoC and hope to keep in Touch! To Infinity and beyond!!!

September 28, 2016

-Standup meeting ✅
-Fix Johanna’s pull request using mergetool “meld”✅
-optimize tests with Matt✅
-(secret) create collage for Tam
-Continue working on our API tool:
link the explorer in the README✅
Delete CORS Code from Pull request✅
adding links with the endpoints✅
working on showing the response of endpoint links on the same page WIP

September 27, 2016

Had Session with Joe about application explorer✅
Our external Api explorer was not working, because we were not getting the headers, so we decided to create an internal api -explorer to make the process faster
Organize Last-Team Call ✅
Continue working on the application explorer: Things to do:
make the page layout and styling nicer ✅
add a text description saying what this page is and what it's for✅
Remind one of our coaches about appointment ✅

September 20, 2016

-We had a session about API’s with one of our coaches, we asked questions and began to build in code.pen.io a sort of form that would respond to the api requests, however we stumbled upon the fact that we don’t have any CORS (Cross Origin Resource Sharing) and added it as an issue to continue working on this, before we can continue with the form✅
- We edited some drops in production✅
-We learned about Memory, RAM and SSD ✅
-Prepare talk ✅

September 19, 2016

all company stand up meeting ✅
dev standup meeting ✅
emotional half an hour ✅
write test for tagging feature✅
submit PR again ✅
continue working on lightning talk ✅
work on separate features ✅
ask Carsten about high chart: we deleted the tests for the high chart✅
attend Ruby Monstas✅

J.:
created CSS styling for select boxes on landing page; added the styling to select boxes in new_view ✅

D:

Wrote text for the User’s Drop View ✅
Submitted Pull Request, but build was failing ✅
Refactored tests and made them fit the fact that some methods were changed back into the application helper and not the AplicationController ✅
learned about the double method in RSpec ✅
changed the routes and changed the tests accordingly ✅

To do:
Johanna: merge conflict tag_search branch
create new drops in production with Robin
ask Robin for date for Dining Philosophers

-Learned why we started to use formean instead of rails S:✅
-Environment variables, using them directly, but we have the gem 'dotenv-rails' which helps us grab the environment variables
- Learned to kill and force kill kill -9 processes
-Fixed the redirection after login to original path✅ by:
-creating a cookie in the requirecurrentuser method within the application helper,

which stores the original path the user wanted to get to and reads this cookie in the

verify method.
needs to be done: write nice text for the user

Next step: Store the cookie in the session

J:
Tag Search Function now works via select box✅
created partial for select box form✅
added labels to select boxes✅
understood more precisely the difference between “get” and “post” requests✅
layout needs to get improved

Future tasks:
- can you make it possible for a user to edit the tags for their drop? If you own a drop you're able to now edit the drop's place information, and I think it should also be possible to edit the tags. To do this, I think you'll have to add the tagging stuff to the edit.html.erb and also probably the update method in the controller.

September 15, 2016

Standup-Meeting✅
Schedule coaching sessions✅
SoundCloud lunch with Team LoadToCode and Kindr3d✅
Add tags to show view: create Tag CSS module, add styling, render tags in view ✅
work on our own features ✅

D :
-refreshed knowledge about class and instance methods in Ruby
-The request tests are passing
-Added My Drops link in the navbar, so the user can view her/his own drops: The problem now is that when the user is logged out and clicks on “Mydrops” she is redirected to SoundCloud’s login and when she logsin, she is redirected to newdrop instead of to mydrops directly. I have to look at the verify method within connect and sort of change this logic.

J:
refactor (“dry out”) test data by creating specific factories for each test case
learned about built_list method within Factory Girl (so that a drop factory can accept more than one tag)
research Factory Girl associations

-Routing when there is no user model in the app and its data is stored by another app
-The double bang !! operator in Ruby :“In most programming languages, including Ruby, ! will return the opposite of the boolean value of the operand. So when you chain two exclamation marks together, it converts the value to a boolean”
-One possible testing rule “required number of tests = number of it else branches”
- about before: do and beforeeachdo

Did:
-Pass methods currentuser and client from application helper to application controller so that they will be available to all controllers and add `helpermethod :currentuser, :client ` line to ApplicationController
-Limit drops to be shown, to be the ones pertaining to the logged in user through SQL query
-Define route for the user’s drop page
-Use welcome#index page as form for the user’s drops page as userdrops view
-Continued writing the request specs

Johanna learned about:
if matching the html response is too hard, it is also ok to test the instance variable, even though it makes the request spec more of a controller spec
assigning a value wrapped in an if-statement
Active::Record Querying:

did:
complete the search function request spec
retrieve only Drops with a certain tag from the DB

Dayana learned about
When is it useful to create a new controller (some tips)
Struct in Ruby
The application helper Module
Authentication and tokens
How to decide when to create a model or not if the app is linked to another app that stores the user, for example SoundCloud

September 12, 2016

-all-company stand-up meeting✅
-dev stand-up meeting✅
-emotional half an hour✅
-answer LoadToCode about lunch this week (Tue or Thu at SC) => see Slack✅
-Looked at the comments on our GitHub during the weekend ✅
-On Friday we did some changes with Robin’s help to redirect to a 404 when something’s not found. Today we looked at them again to understand them better and wrote a commit msg about it✅
-Refactored Drop controller tests, because the test shouldn’t care about the methods used to extract data from databases ✅
-stub API tests✅
-Got explanation from Carsten about how page not found is already included in production mode by rails, so it is not necessary to implement it ✅
-began working on our own features ✅
-began working on the talk 16:45 ✅

September 09, 2016

-We met our supervisors and discussed what we did this week and plans for the week:
Decided to: Add checkbox to replace select box to be more user friendly ✅
And decided on some issues to to tackle individually : ✅
-Johanna will afterwards work on the search drop feature
-Dayana will work on the feature that allows each user to see the drops she has created
-We had our session on Programming Paradigms with Ellen ✅
-Power Hour✅
-We implemented checkboxes instead of the select-box and submitted pull request for it ✅
-Our build is failing because of our APi Request Tests, we need to stub them and we need to add tests for the tagging feature ✅
-We had a session with Robin, He explained some concepts to us and then we made a Roadmap for the features we will tackle individually ✅
- before starting the weekend we have an all-team-meeting for which our supervisor Anke came from Hamburg to Berlin 👏

September 08, 2016

Stand up meeting ✅
Ask questions about Programming Paradigms and e-mail them for our session tomorrow✅
Try to continue debugging and had a lot of problems with unpermitted params ✅
Meet with team Load to Code for Lunch 12:30 -13:30✅
Learned about Keyword Arguments✅
More debugging because two params are not permitted✅
Learned about Underscore Method in irb and rails console to assign variables and also about fg and ctrl + z`for foreground and background processes ✅
Individual learning ✅

September 07, 2016

Stand-up meeting ✅
Read about form helpers ✅
created select box✅
answer Ellen if we have questions✅
Robin explained us a bit about the relationship between params, form and controller “The params are the messenger dove between the form and the controller” 🕊✅
Ran into trouble with the params & select box, so tried to look into select tag✅
After reading and asking for help we implemented a select box, using virtual attributes in the model and allowed tags in the params ✅

continued advertising our whole team meet n’greet on Friday ✅

September 06, 2016

We Talked about our next feature: implementing a tagging feature for Drops. Zaz!! Or Yay!! And brainstormed about how the tagging should look like and work. ✅
We collected questions (mostly about databases) for our session with Joe ✅
Had a session about tagging feature where we asked all our questions ✅
Began implementing the Tagging feature ✅
Created models for tagging and talked about next steps✅
Asked some more questions to Carsten and Learned a whole lot about migrations✅
We also learned about possible issues because of the difference between spaces and tabs in different editors✅
Made a rough roadmap to continue working on the feature, so we have a plan for tomorrow✅

September 05, 2016

Company Stand up✅
Stand-up✅
Emotional half an hour✅
Ask Robin about Kata he has prepared -> Friday✅
Deployment? We looked into deployment issues, and could start the server manually, but we couldn’t solve the issues✅
Begin planning the preparation of the lightning talk -> next week✅
Read about implementations of tagging feature from scratch✅
We did some individual learning✅

September 01, 2016

Dayana continued working on Game of Life:
-Learned about the glider ✅
-Learned about "Single Assertion Rule"
which means one assertion / test
but you can have multiple assertions if you testing logically the same thing, more than a rule it is a guide ✅
-used binding pry ✅
-began looking back on what I had done until the moment and how the elements interact with each other ✅
- Managed to write step method must go back to the tests afterwards because they are now failing-✅
-Booked session with Ellen on 9.09.2016✅

August 31, 2016

Today Dayana by was herself so she decided to work on her small Javascript project and on Conway’s Game of Life .

Javascript:
I am happy using linter now ✅
I learned that:
Console.log can be one’s best friend ✅
And if you look at the console: the colors show different things: blue is a color and gray means string so you gotta keep checking with numbers if they are really numbers✅
Learned that with jQuery I can already call a function I define after the $document.ready(myfunction); ✅
Used the fabulous null guard to make sure that at the beginning the default value is passed, since the user has not entered anything and when the user enters sth it will take this value: ✅
```
if(!size) {
size = DEFAULT_SIZE;
}
makeGrid
}

this is called NULL guard
if there is a size param specified, it will use that
if not -> fall back to the default
`
Then changed it to :

if (!$.isNumeric( number)) {

}
```
I began using the auto indent function included in atom ✅
I am using git diff more frequently (great for commits) ✅
My project now has a container with some squares and the user can decide how many squares it should have. This is working , will continue later ✅
Took a twitter break ✅

Game of Life

Retook Conway’s Game of Life and began trying to implement the following method with TDD:
def ==(other)
#Should iterate through the self cells and compare them with the corresponding cells from other
end

For it I :
Revised the difference between Identity and sameness ✅
Understood why I need to define an == method ✅
Learned that assert_same is using .equal? to compare objectsassert_equal is using ==✅
Began implementing the method and the first test which compares two dead grids and passes ✅

August 30, 2016

-Stand-up meeting✅
- Johanna explained to Dayana the advances with the project until the moment✅
-Fix some zsh shell issues✅
-Discovered that our Drops are “formatted” in different ways- inquire about this : we merged master into our staticpages branches to pull the migration for the Drops format. ✅
-We went to have lunch together ✅
-We asked if there are still tickets for rthe GOTO Berlin conference, sadly no✅
-Decided to do validation of lat and long ✅
validate :latitude presence:true
validate :longitude presence:true
beforevalidation -> if there is a place copy lat and long from it
add latitude method to Drop model
Created an issue for it ✅
-We created the validation and the before_validation action ✅
-reseted our data seeds and now we have the same Drops locally ✅
-Talked about the next steps✅
-Ask Ellen about having a session regarding programming paradigms✅
-Set up meeting with one of our coaches for creating tags ✅

August 26, 2016

meet mentors and Nynne at SoundCloud:
look at JS refactoring we did during the week✅
quick enhancements: move marker function to map.js, put it inside a loop (to create a marker for every drop) and fix coordinateList iteration => markers now shwoing, but without icon✅
Power Hour @Absolventa (J. prestented the Ruby Kata she worked on yesterday✅
talked about possible next step: add tagging feature + add new issue✅
learned about using debugger in JS code (also with breakpoints in Chrome)✅
continue reading in JS book✅

August 25, 2016

Today Johanna was by herself and after so much JS this week she was happy to code in Ruby and practice TDD in a pair programming session with Robin (thanks, I think I can finally get used to TDD!). Her effort was honored with 🍨 by Markus (thanks again!) and in the end she read a bit in the Head First JS book that she borrowed from Dayana (thanks again! :) )

August 24, 2016

-Stand-up meeting ✅
-We had an introduction to html elements and how we can access them using JS ✅
-We reviewed data-set-structures for html elements✅
- We refactored some of our JS code using data structures to access the dropßs lat and longitude✅
- We converted our lat and long strings to floats and Our map appeared again 😀✅
We tried to refactor some more and
-Our map disappeared again ✅
-We created an issue for a possible implementation of a feature: initialize map according to user’s location and put the change Map code in an issue✅
-Our map appeared again😀✅
-We talked about our learning during the time we’re not working together ✅
-We started to “market” our all-team get-together™ so we are hoping most of our team members will join :) ✅💯🍾

August 17, 2016

-Confirm we want a slot for a lightning talk at Euruko ✅
-Check if the Ruby Cats are also giving a talk to avoid repeating content ✅
-Ruby session with two of our coaches!: We talked about : def ==(other_object) , infix operators, query methods, command methods, modules, comparable module and lambdas, also about enumerable methods : .each and .map ✅
-We sent invitations for the All-Team Call✅
-We were able to tame the map to be centered and big ✅
-We began looking why the Travis build of one of our branches breaks and found it✅
-We had a deep dive session about IP Addresses with one of our coaches✅
-We did some separate learning ✅

August 16, 2016

-Went through our Roadmap and prepared questions related to the api for one of our coaches to whom we want to present our api so far ✅
-Subscribed to Ruby weekly ✅🤓
- Session about api’s with one of our coaches: We went through our api and asked some questions, we decided we would do a session on oauth ✅
-We moved the contents that were on the landing page to an about page and prepared the landing page for the map ✅
-We began trying to implement the map ✅
-We read google Maps API documentation ✅

August 15, 2016

Standup-Meeting ✅
emotianal half an hour ✅
Refactor js code with Markus ✅ : We removed the SetTimeOut function and passed the id as a data attribute and then we used this data attribute to be able to access the id.
Talk about the next feature: ✅
map on welcome page that shows existing drops
pagination- > not so urgent
We also talked about web-sockets- active cable and polling ✅
Write to friend to see if she wants to participate building the React mobile app✅

August 09, 2016

Selenium Webdriver: We tried to fix the problem we had but the latest versions of Firefox are not compatible with the latest gem, so it is a setup problem ✅
Talk to Carsten about our project and about the next steps✅
Lunch with Laura✅
Answer Maria for conference✅

August 08, 2016

-Stand-up meeting✅
-Emotional half an hour✅
-Finish Coaching Company statement and send it along with graphic material✅
-Look into the Chrome problem - We discovered an issue referencing our problem, within the SoundCloud API, we are trying to find a work around ✅
- Fix index action within api controller to make tests pass✅
- We talked about the rails console and the development database
-Apply for Hybrid conference✅
-Go to the RubyMonstas✅

August 05, 2016

Meeting with mentors and Nynne (alumna) regarding SoundDrop✅
Talked about the present issues:
-Sound not playing in Chrome: unclear where it comes from
- issues with Geocoder near method: solved :) ✅
Discovered binding.pry, a very helpful debugging tool ✅

Power Hour: learned about Y-combinator✅

August 04, 2016

Stand up meeting ✅
Index actions and Request specs for radius : continue writing the index action and tests, still struggling ✅
Discover Geocode near method causes problems✅
Write a class to test another method: We are still doing this ✅
Getting familiar with the five stages of debugging - until now we’ve experienced the first three ✅

July 29, 2016

Stand-up meeting?✅
Prepare the vcr power hour:✅
How does vcr actually work, step by step, how does it use webmock ✅
Power hour: Held our first talk ! Milestone! ✅
Met Tam and showed her our PR, then merged it ✅
Talked about rake tasks ✅

July 28, 2016

Small changes for the json-api pull request✅
Checked the difference between Controller tests vs Request Tests to answer a PR comment✅
Look at VCR gem to present the VCR gem at the Power hour✅
Look at Ariane’s mocking work✅
Try to understand the difference between mocking and stubbing ✅
Finish the JS Task …. -> finished first version✅
Had a JS session with one of our coaches ✅

July 27, 2016

Stand up meeting✅
Continue writing the tests and making them work ✅
JS Tutorial and /or homework: We did some codecademy JS and then tried to complete the work one of our coaches left us … we will continue tomorrow
What is Git Tower? ✅
Call with Anke ✅

July 25, 2016

-stand up meeting✅
-Discussed communication✅
-Talk about nil guard with one of our coaches✅
-Johanna caught up with Dayana’s work so far✅
-Session with Markus about Javascript✅
-We gathered our questions about the api behind-the-scenes and asked them and got answers to some of them, we will continue tomorrow. ✅
-we went to the RubyMonstas✅

July 22, 2016

Talked to Duana & Tam (mentors) about the Api specs✅
First deployment of the fix-Glyphicons 🎉🎉🎉✅
Some suggestions for later : maybe have versions of the Api?✅
Attended the Power Hour✅
Make and solve a git mess with git reset HEAD --hard✅
Create a new branch to fix Javascript errors and see why the buttons are not playing in deployed version: a validation may be required and there are some semicolons missing: corrected semicolons (maybe in the future put everything into a big function but when we are sure that it doesn’t break anything) and put the soundcloud long and lat as a fallback✅

Started learning some Javascript or re-learning ✅

Got back to the request Test: ✅
1)There was a problem because the api was defined as API, and this caused problems: had to be changed to api all in lower-case letters
2) Then added the following code to routes:
´´´
namespace :api do
resources :drops
end

´´´
‘resources’ tells the application how to match url with controllers and their methods. By default it maps: index, show, new, create, edit, update and destroy.

July 21, 2016

-Explanations of the beginning of the API✅
- Scheduling✅
-PR explanations ✅
-Feedback to Duana about party ✅
-Kata ✅
-Presentation ✅
-Continue with the implementation of the SoundDrop API: ✅
-Ask question about some unclear Lines of code in the request test :

Run this test once, and VCR will record the HTTP request to fixtures/vcrcassettes/synopsis.yml. Run it again, and VCR will replay the response from iana.org when the HTTP request is made. This test is now fast (no real HTTP requests are made anymore), deterministic (the test will continue to pass, even if you are offline, or iana.org goes down for maintenance) and accurate (the response will contain the same headers and body you get from a real request). You can use a different cassette library directory (e.g., "test/vcrcassettes").

Jbuilder is a template engine for rendering JSON responses. It gives you a simple DSL for declaring JSON structures that simplifies managing giant hash structures. You can have Jbuilder in your applications through its gem.

-Create file with the same structure: views/api/controllername/index.json.jbuilder so
views/api/drops_controller/index.json.jbuilder but decided to delete again

Still two failing tests continue tomorrow

July 20, 2016

-Talk to Mentor about API feautures✅
-Ruby Kata✅
-Call with our Supervisor ✅
- Send pics with better resolution to our supervisor ✅
-Begin with the implementation of the SoundDrop API : ✅
-create an API folder within the controllers folder to keep it nice and separate
-generate a controller within the API folder
-write an index method within the controller
-check that FactoryGirl is set up in project (it was ☺️) and exploring where it is configured
-create a spec file for the API controller test spec/requests/api/somecontrollerspec.rb
-begin writing the spec request test for #index
-trying to run the test - fixing syntax - asked #helpdesk for this
-trying to run it again
-adding the ‘responder’ gem to be able to include ‘responds to’
-syntax helped , but now tests are failing will continue tomorrow...🤓

July 15, 2016

-Scheduling, Communication✅
-Ruby Kata✅
-Find a better group pic and send it to our supervisor✅
-Had Lunch with two of our coaches and talked industry ✅
-Power Hour : Database views and Memory Slots in Ruby and references vauel by reference and call by value ✅
-Continue writing the CRUD request tests: UPDATE and DESTROY: We began writing the Update test ✅
-Meeting with Ellen to talk about Databases✅

July 12, 2016

Session with Robin about API unit testing and specifically request testing ✅
Try to create API Request Tests for our mini JSON API in order to understand SoundDrop’s tests and improve them ✅ still trying
Install FactoryGirl, try to understand it , try to use it in a request test ✅
Read about RSpec and its syntax to try to understand what we’re doing✅
Learned more about HTTP verbs ✅
Retrospective about today ✅

July 11, 2016

-We had breakfst with our coaching company’s complete team (not only development) and presented ourselves. ✅
-We took part on the daily stand-up meeting. ✅
-We set the doodle to organize the team call ✅
-Got introduced to HAML ✅
-Decided to do a PR for the Css we have now and continue with the buttons and the responsive design afterwards✅
-Choose a publication date for our first blog post (Friday the 15th ) ✅
-We had lunch with one of our coaches ✅
-We had a session with one of our coaches about Apis and have now two tasks: ✅
-To build a mini- app that returns data in a json format ✅
- To create a CRUD Cycle with this mini app✅
-Plan a controller and api testing session with one of our coaches for tomorrow✅
-Retrospective about today✅
-attend the Ruby Monstas✅

July 08, 2016

-We met with our mentors @SoundCloud and showed them our work and got feedback from them and tasks for next week: - understanding oauth, and getting to know the project more through tests. We also got access to the SoundDrop root server. ✅
-We had theoretical input by one of our coaches about Servers and it was a lot to stomach 🤓 ✅
-Johanna pushed her changes from yesterday which are still WIP and did a pull request ✅
Note : When opening a new pull request the base should be sounddrop/sounddrop to avoid opening on the old repository
-We tried to deploy but noticed there were some errors, so some things were not working. So we got more tasks for the upcoming week: to get some input about: stack trace, log levels, production and development environments. ✅
-Attended Power Hour with one of our coaches : Talked about and downloaded sonic_pi and then talked about programming paradigms, especially object-oriented and functional. ✅
-Johanna walked Dayana through the changes she made yesterday✅
-We had a quick retrospective amongst ourselves✅

Ask about the power hour and Fridays, to see if it is cool to go to SoundCloud and then come here for the meeting ✅
Took a Picture with some of our coaches at Absolventa ✅
Our first Pull request got merged ✅

July 04, 2016

Today we came to Soundcloud to work here for the first time, since our coaching company’s coaches were on a day trip. After taking a picture with the LoadToCode Team and one of our mentors, we talked a a bit about concepts we had begun investigating on Friday such as the splat operator in Ruby and stringio, we also talked about the strip method.

Today, our main Goal is to get acquainted with RSpec. So to that end, one of our coaches came by to talk to us about RSpec. We started by talking about the differences between Rspec and MiniTest and then took a look at some of the SoundDrop Model and controller tests. We decided to focus on the model tests at the beginning, since they are easier to understand. We looked at the current RSpec syntax and talked about the VCR library, the difference between “build” and “create”. We also quickly went over how to run RSpec tests and how to run only a line. Afterwards we had a meeting with one of our mentors and set the goals for this week:

-Remove QR Codes ✅
-Fix the play and login buttons and improve UX a bit
-Fix the Selenium setup with Firefox to get the tests running correctly
-Begin getting acquainted with RSpec
-Prepare some questions for our Friday theory session
-On Friday we will meet our mentors again and deploy our first change.

After deciding on these goals, we also decided to hold up a short meeting each morning and one a half an hour before ending the day to go over our processes, successes and problems.

We then did our first PR for the SoundDrop app in which we erased links to QR Codes, which we won’t be needing anymore and the welcome QR path

July 01, 2016

So our first day as Jodas is coming to an endr. Today we came to Absolventa and:

-Met the Developer team and part of our coaches and had an office tour
-Took part in their stand-up meeting and presented ourselves and our project
-We had our first call with our supervisor in which we introduced ourselves and cleared some organizational stuff
-We went for lunch with the dev team
-We took part in the Dev Team "power hour" where one of the team members presented some Crystal features and some ways to improve a partial in a Rails application
- We learned about Private Methods and the Ruby Splat operator , we also reviewed the Single Responsibility Principle for classes and methods
- We set up a slack channel for our team and made sure that everybody knows about the kickoff party
- We talked about object oriented design
- We organized our Monday meeting with one of our Mentors
- We decided that on Monday we will be working learning RSPEC and writing small tests to get to know the codebase better.

September 30, 2016

Today was our last day and it felt weird: Sort of like finishing school. We’re happy we have achieved this much, but are also sad leaving our code summer behind. We have learned a lot, but there is yet more to learn. We’re very thankful for all the help we have had and will continue learning and coding 😀

Our last day : 😢
Met with Tam and talked about our last contribution within Summer of Code✅
Showed her the treasure hunt that Absolventa coaches prepared for us✅
Talked about “The Future” - What comes next?✅
Power Hower: Learned about Linter Rules✅ and about reactive programing✅
Finished preparing talk for Goodbye Party✅
Finished styling the API explorer✅

We will miss all of the amazing people we met during RGSoC and hope to keep in Touch! To Infinity and beyond!!!

September 28, 2016

-Standup meeting ✅
-Fix Johanna’s pull request using mergetool “meld”✅
-optimize tests with Matt✅
-(secret) create collage for Tam
-Continue working on our API tool:
link the explorer in the README✅
Delete CORS Code from Pull request✅
adding links with the endpoints✅
working on showing the response of endpoint links on the same page WIP

September 27, 2016

Had Session with Joe about application explorer✅
Our external Api explorer was not working, because we were not getting the headers, so we decided to create an internal api -explorer to make the process faster
Organize Last-Team Call ✅
Continue working on the application explorer: Things to do:
make the page layout and styling nicer ✅
add a text description saying what this page is and what it's for✅
Remind one of our coaches about appointment ✅

September 20, 2016

-We had a session about API’s with one of our coaches, we asked questions and began to build in code.pen.io a sort of form that would respond to the api requests, however we stumbled upon the fact that we don’t have any CORS (Cross Origin Resource Sharing) and added it as an issue to continue working on this, before we can continue with the form✅
- We edited some drops in production✅
-We learned about Memory, RAM and SSD ✅
-Prepare talk ✅

September 19, 2016

all company stand up meeting ✅
dev standup meeting ✅
emotional half an hour ✅
write test for tagging feature✅
submit PR again ✅
continue working on lightning talk ✅
work on separate features ✅
ask Carsten about high chart: we deleted the tests for the high chart✅
attend Ruby Monstas✅

J.:
created CSS styling for select boxes on landing page; added the styling to select boxes in new_view ✅

D:

Wrote text for the User’s Drop View ✅
Submitted Pull Request, but build was failing ✅
Refactored tests and made them fit the fact that some methods were changed back into the application helper and not the AplicationController ✅
learned about the double method in RSpec ✅
changed the routes and changed the tests accordingly ✅

To do:
Johanna: merge conflict tag_search branch
create new drops in production with Robin
ask Robin for date for Dining Philosophers

-Learned why we started to use formean instead of rails S:✅
-Environment variables, using them directly, but we have the gem 'dotenv-rails' which helps us grab the environment variables
- Learned to kill and force kill kill -9 processes
-Fixed the redirection after login to original path✅ by:
-creating a cookie in the requirecurrentuser method within the application helper,

which stores the original path the user wanted to get to and reads this cookie in the

verify method.
needs to be done: write nice text for the user

Next step: Store the cookie in the session

J:
Tag Search Function now works via select box✅
created partial for select box form✅
added labels to select boxes✅
understood more precisely the difference between “get” and “post” requests✅
layout needs to get improved

Future tasks:
- can you make it possible for a user to edit the tags for their drop? If you own a drop you're able to now edit the drop's place information, and I think it should also be possible to edit the tags. To do this, I think you'll have to add the tagging stuff to the edit.html.erb and also probably the update method in the controller.

September 15, 2016

Standup-Meeting✅
Schedule coaching sessions✅
SoundCloud lunch with Team LoadToCode and Kindr3d✅
Add tags to show view: create Tag CSS module, add styling, render tags in view ✅
work on our own features ✅

D :
-refreshed knowledge about class and instance methods in Ruby
-The request tests are passing
-Added My Drops link in the navbar, so the user can view her/his own drops: The problem now is that when the user is logged out and clicks on “Mydrops” she is redirected to SoundCloud’s login and when she logsin, she is redirected to newdrop instead of to mydrops directly. I have to look at the verify method within connect and sort of change this logic.

J:
refactor (“dry out”) test data by creating specific factories for each test case
learned about built_list method within Factory Girl (so that a drop factory can accept more than one tag)
research Factory Girl associations

-Routing when there is no user model in the app and its data is stored by another app
-The double bang !! operator in Ruby :“In most programming languages, including Ruby, ! will return the opposite of the boolean value of the operand. So when you chain two exclamation marks together, it converts the value to a boolean”
-One possible testing rule “required number of tests = number of it else branches”
- about before: do and beforeeachdo

Did:
-Pass methods currentuser and client from application helper to application controller so that they will be available to all controllers and add `helpermethod :currentuser, :client ` line to ApplicationController
-Limit drops to be shown, to be the ones pertaining to the logged in user through SQL query
-Define route for the user’s drop page
-Use welcome#index page as form for the user’s drops page as userdrops view
-Continued writing the request specs

Johanna learned about:
if matching the html response is too hard, it is also ok to test the instance variable, even though it makes the request spec more of a controller spec
assigning a value wrapped in an if-statement
Active::Record Querying:

did:
complete the search function request spec
retrieve only Drops with a certain tag from the DB

Dayana learned about
When is it useful to create a new controller (some tips)
Struct in Ruby
The application helper Module
Authentication and tokens
How to decide when to create a model or not if the app is linked to another app that stores the user, for example SoundCloud

September 12, 2016

-all-company stand-up meeting✅
-dev stand-up meeting✅
-emotional half an hour✅
-answer LoadToCode about lunch this week (Tue or Thu at SC) => see Slack✅
-Looked at the comments on our GitHub during the weekend ✅
-On Friday we did some changes with Robin’s help to redirect to a 404 when something’s not found. Today we looked at them again to understand them better and wrote a commit msg about it✅
-Refactored Drop controller tests, because the test shouldn’t care about the methods used to extract data from databases ✅
-stub API tests✅
-Got explanation from Carsten about how page not found is already included in production mode by rails, so it is not necessary to implement it ✅
-began working on our own features ✅
-began working on the talk 16:45 ✅

September 09, 2016

-We met our supervisors and discussed what we did this week and plans for the week:
Decided to: Add checkbox to replace select box to be more user friendly ✅
And decided on some issues to to tackle individually : ✅
-Johanna will afterwards work on the search drop feature
-Dayana will work on the feature that allows each user to see the drops she has created
-We had our session on Programming Paradigms with Ellen ✅
-Power Hour✅
-We implemented checkboxes instead of the select-box and submitted pull request for it ✅
-Our build is failing because of our APi Request Tests, we need to stub them and we need to add tests for the tagging feature ✅
-We had a session with Robin, He explained some concepts to us and then we made a Roadmap for the features we will tackle individually ✅
- before starting the weekend we have an all-team-meeting for which our supervisor Anke came from Hamburg to Berlin 👏

September 08, 2016

Stand up meeting ✅
Ask questions about Programming Paradigms and e-mail them for our session tomorrow✅
Try to continue debugging and had a lot of problems with unpermitted params ✅
Meet with team Load to Code for Lunch 12:30 -13:30✅
Learned about Keyword Arguments✅
More debugging because two params are not permitted✅
Learned about Underscore Method in irb and rails console to assign variables and also about fg and ctrl + z`for foreground and background processes ✅
Individual learning ✅

September 07, 2016

Stand-up meeting ✅
Read about form helpers ✅
created select box✅
answer Ellen if we have questions✅
Robin explained us a bit about the relationship between params, form and controller “The params are the messenger dove between the form and the controller” 🕊✅
Ran into trouble with the params & select box, so tried to look into select tag✅
After reading and asking for help we implemented a select box, using virtual attributes in the model and allowed tags in the params ✅

continued advertising our whole team meet n’greet on Friday ✅

September 06, 2016

We Talked about our next feature: implementing a tagging feature for Drops. Zaz!! Or Yay!! And brainstormed about how the tagging should look like and work. ✅
We collected questions (mostly about databases) for our session with Joe ✅
Had a session about tagging feature where we asked all our questions ✅
Began implementing the Tagging feature ✅
Created models for tagging and talked about next steps✅
Asked some more questions to Carsten and Learned a whole lot about migrations✅
We also learned about possible issues because of the difference between spaces and tabs in different editors✅
Made a rough roadmap to continue working on the feature, so we have a plan for tomorrow✅

September 05, 2016

Company Stand up✅
Stand-up✅
Emotional half an hour✅
Ask Robin about Kata he has prepared -> Friday✅
Deployment? We looked into deployment issues, and could start the server manually, but we couldn’t solve the issues✅
Begin planning the preparation of the lightning talk -> next week✅
Read about implementations of tagging feature from scratch✅
We did some individual learning✅

September 01, 2016

Dayana continued working on Game of Life:
-Learned about the glider ✅
-Learned about "Single Assertion Rule"
which means one assertion / test
but you can have multiple assertions if you testing logically the same thing, more than a rule it is a guide ✅
-used binding pry ✅
-began looking back on what I had done until the moment and how the elements interact with each other ✅
- Managed to write step method must go back to the tests afterwards because they are now failing-✅
-Booked session with Ellen on 9.09.2016✅

August 31, 2016

Today Dayana by was herself so she decided to work on her small Javascript project and on Conway’s Game of Life .

Javascript:
I am happy using linter now ✅
I learned that:
Console.log can be one’s best friend ✅
And if you look at the console: the colors show different things: blue is a color and gray means string so you gotta keep checking with numbers if they are really numbers✅
Learned that with jQuery I can already call a function I define after the $document.ready(myfunction); ✅
Used the fabulous null guard to make sure that at the beginning the default value is passed, since the user has not entered anything and when the user enters sth it will take this value: ✅
```
if(!size) {
size = DEFAULT_SIZE;
}
makeGrid
}

this is called NULL guard
if there is a size param specified, it will use that
if not -> fall back to the default
`
Then changed it to :

if (!$.isNumeric( number)) {

}
```
I began using the auto indent function included in atom ✅
I am using git diff more frequently (great for commits) ✅
My project now has a container with some squares and the user can decide how many squares it should have. This is working , will continue later ✅
Took a twitter break ✅

Game of Life

Retook Conway’s Game of Life and began trying to implement the following method with TDD:
def ==(other)
#Should iterate through the self cells and compare them with the corresponding cells from other
end

For it I :
Revised the difference between Identity and sameness ✅
Understood why I need to define an == method ✅
Learned that assert_same is using .equal? to compare objectsassert_equal is using ==✅
Began implementing the method and the first test which compares two dead grids and passes ✅

August 30, 2016

-Stand-up meeting✅
- Johanna explained to Dayana the advances with the project until the moment✅
-Fix some zsh shell issues✅
-Discovered that our Drops are “formatted” in different ways- inquire about this : we merged master into our staticpages branches to pull the migration for the Drops format. ✅
-We went to have lunch together ✅
-We asked if there are still tickets for rthe GOTO Berlin conference, sadly no✅
-Decided to do validation of lat and long ✅
validate :latitude presence:true
validate :longitude presence:true
beforevalidation -> if there is a place copy lat and long from it
add latitude method to Drop model
Created an issue for it ✅
-We created the validation and the before_validation action ✅
-reseted our data seeds and now we have the same Drops locally ✅
-Talked about the next steps✅
-Ask Ellen about having a session regarding programming paradigms✅
-Set up meeting with one of our coaches for creating tags ✅

August 26, 2016

meet mentors and Nynne at SoundCloud:
look at JS refactoring we did during the week✅
quick enhancements: move marker function to map.js, put it inside a loop (to create a marker for every drop) and fix coordinateList iteration => markers now shwoing, but without icon✅
Power Hour @Absolventa (J. prestented the Ruby Kata she worked on yesterday✅
talked about possible next step: add tagging feature + add new issue✅
learned about using debugger in JS code (also with breakpoints in Chrome)✅
continue reading in JS book✅

August 25, 2016

Today Johanna was by herself and after so much JS this week she was happy to code in Ruby and practice TDD in a pair programming session with Robin (thanks, I think I can finally get used to TDD!). Her effort was honored with 🍨 by Markus (thanks again!) and in the end she read a bit in the Head First JS book that she borrowed from Dayana (thanks again! :) )

August 24, 2016

-Stand-up meeting ✅
-We had an introduction to html elements and how we can access them using JS ✅
-We reviewed data-set-structures for html elements✅
- We refactored some of our JS code using data structures to access the dropßs lat and longitude✅
- We converted our lat and long strings to floats and Our map appeared again 😀✅
We tried to refactor some more and
-Our map disappeared again ✅
-We created an issue for a possible implementation of a feature: initialize map according to user’s location and put the change Map code in an issue✅
-Our map appeared again😀✅
-We talked about our learning during the time we’re not working together ✅
-We started to “market” our all-team get-together™ so we are hoping most of our team members will join :) ✅💯🍾

August 17, 2016

-Confirm we want a slot for a lightning talk at Euruko ✅
-Check if the Ruby Cats are also giving a talk to avoid repeating content ✅
-Ruby session with two of our coaches!: We talked about : def ==(other_object) , infix operators, query methods, command methods, modules, comparable module and lambdas, also about enumerable methods : .each and .map ✅
-We sent invitations for the All-Team Call✅
-We were able to tame the map to be centered and big ✅
-We began looking why the Travis build of one of our branches breaks and found it✅
-We had a deep dive session about IP Addresses with one of our coaches✅
-We did some separate learning ✅

August 16, 2016

-Went through our Roadmap and prepared questions related to the api for one of our coaches to whom we want to present our api so far ✅
-Subscribed to Ruby weekly ✅🤓
- Session about api’s with one of our coaches: We went through our api and asked some questions, we decided we would do a session on oauth ✅
-We moved the contents that were on the landing page to an about page and prepared the landing page for the map ✅
-We began trying to implement the map ✅
-We read google Maps API documentation ✅

August 15, 2016

Standup-Meeting ✅
emotianal half an hour ✅
Refactor js code with Markus ✅ : We removed the SetTimeOut function and passed the id as a data attribute and then we used this data attribute to be able to access the id.
Talk about the next feature: ✅
map on welcome page that shows existing drops
pagination- > not so urgent
We also talked about web-sockets- active cable and polling ✅
Write to friend to see if she wants to participate building the React mobile app✅

August 09, 2016

Selenium Webdriver: We tried to fix the problem we had but the latest versions of Firefox are not compatible with the latest gem, so it is a setup problem ✅
Talk to Carsten about our project and about the next steps✅
Lunch with Laura✅
Answer Maria for conference✅

August 08, 2016

-Stand-up meeting✅
-Emotional half an hour✅
-Finish Coaching Company statement and send it along with graphic material✅
-Look into the Chrome problem - We discovered an issue referencing our problem, within the SoundCloud API, we are trying to find a work around ✅
- Fix index action within api controller to make tests pass✅
- We talked about the rails console and the development database
-Apply for Hybrid conference✅
-Go to the RubyMonstas✅

August 05, 2016

Meeting with mentors and Nynne (alumna) regarding SoundDrop✅
Talked about the present issues:
-Sound not playing in Chrome: unclear where it comes from
- issues with Geocoder near method: solved :) ✅
Discovered binding.pry, a very helpful debugging tool ✅

Power Hour: learned about Y-combinator✅

August 04, 2016

Stand up meeting ✅
Index actions and Request specs for radius : continue writing the index action and tests, still struggling ✅
Discover Geocode near method causes problems✅
Write a class to test another method: We are still doing this ✅
Getting familiar with the five stages of debugging - until now we’ve experienced the first three ✅

July 29, 2016

Stand-up meeting?✅
Prepare the vcr power hour:✅
How does vcr actually work, step by step, how does it use webmock ✅
Power hour: Held our first talk ! Milestone! ✅
Met Tam and showed her our PR, then merged it ✅
Talked about rake tasks ✅

July 28, 2016

Small changes for the json-api pull request✅
Checked the difference between Controller tests vs Request Tests to answer a PR comment✅
Look at VCR gem to present the VCR gem at the Power hour✅
Look at Ariane’s mocking work✅
Try to understand the difference between mocking and stubbing ✅
Finish the JS Task …. -> finished first version✅
Had a JS session with one of our coaches ✅

July 27, 2016

Stand up meeting✅
Continue writing the tests and making them work ✅
JS Tutorial and /or homework: We did some codecademy JS and then tried to complete the work one of our coaches left us … we will continue tomorrow
What is Git Tower? ✅
Call with Anke ✅

July 25, 2016

-stand up meeting✅
-Discussed communication✅
-Talk about nil guard with one of our coaches✅
-Johanna caught up with Dayana’s work so far✅
-Session with Markus about Javascript✅
-We gathered our questions about the api behind-the-scenes and asked them and got answers to some of them, we will continue tomorrow. ✅
-we went to the RubyMonstas✅

July 22, 2016

Talked to Duana & Tam (mentors) about the Api specs✅
First deployment of the fix-Glyphicons 🎉🎉🎉✅
Some suggestions for later : maybe have versions of the Api?✅
Attended the Power Hour✅
Make and solve a git mess with git reset HEAD --hard✅
Create a new branch to fix Javascript errors and see why the buttons are not playing in deployed version: a validation may be required and there are some semicolons missing: corrected semicolons (maybe in the future put everything into a big function but when we are sure that it doesn’t break anything) and put the soundcloud long and lat as a fallback✅

Started learning some Javascript or re-learning ✅

Got back to the request Test: ✅
1)There was a problem because the api was defined as API, and this caused problems: had to be changed to api all in lower-case letters
2) Then added the following code to routes:
´´´
namespace :api do
resources :drops
end

´´´
‘resources’ tells the application how to match url with controllers and their methods. By default it maps: index, show, new, create, edit, update and destroy.

July 21, 2016

-Explanations of the beginning of the API✅
- Scheduling✅
-PR explanations ✅
-Feedback to Duana about party ✅
-Kata ✅
-Presentation ✅
-Continue with the implementation of the SoundDrop API: ✅
-Ask question about some unclear Lines of code in the request test :

Run this test once, and VCR will record the HTTP request to fixtures/vcrcassettes/synopsis.yml. Run it again, and VCR will replay the response from iana.org when the HTTP request is made. This test is now fast (no real HTTP requests are made anymore), deterministic (the test will continue to pass, even if you are offline, or iana.org goes down for maintenance) and accurate (the response will contain the same headers and body you get from a real request). You can use a different cassette library directory (e.g., "test/vcrcassettes").

Jbuilder is a template engine for rendering JSON responses. It gives you a simple DSL for declaring JSON structures that simplifies managing giant hash structures. You can have Jbuilder in your applications through its gem.

-Create file with the same structure: views/api/controllername/index.json.jbuilder so
views/api/drops_controller/index.json.jbuilder but decided to delete again

Still two failing tests continue tomorrow

July 20, 2016

-Talk to Mentor about API feautures✅
-Ruby Kata✅
-Call with our Supervisor ✅
- Send pics with better resolution to our supervisor ✅
-Begin with the implementation of the SoundDrop API : ✅
-create an API folder within the controllers folder to keep it nice and separate
-generate a controller within the API folder
-write an index method within the controller
-check that FactoryGirl is set up in project (it was ☺️) and exploring where it is configured
-create a spec file for the API controller test spec/requests/api/somecontrollerspec.rb
-begin writing the spec request test for #index
-trying to run the test - fixing syntax - asked #helpdesk for this
-trying to run it again
-adding the ‘responder’ gem to be able to include ‘responds to’
-syntax helped , but now tests are failing will continue tomorrow...🤓

July 15, 2016

-Scheduling, Communication✅
-Ruby Kata✅
-Find a better group pic and send it to our supervisor✅
-Had Lunch with two of our coaches and talked industry ✅
-Power Hour : Database views and Memory Slots in Ruby and references vauel by reference and call by value ✅
-Continue writing the CRUD request tests: UPDATE and DESTROY: We began writing the Update test ✅
-Meeting with Ellen to talk about Databases✅

July 12, 2016

Session with Robin about API unit testing and specifically request testing ✅
Try to create API Request Tests for our mini JSON API in order to understand SoundDrop’s tests and improve them ✅ still trying
Install FactoryGirl, try to understand it , try to use it in a request test ✅
Read about RSpec and its syntax to try to understand what we’re doing✅
Learned more about HTTP verbs ✅
Retrospective about today ✅

July 11, 2016

-We had breakfst with our coaching company’s complete team (not only development) and presented ourselves. ✅
-We took part on the daily stand-up meeting. ✅
-We set the doodle to organize the team call ✅
-Got introduced to HAML ✅
-Decided to do a PR for the Css we have now and continue with the buttons and the responsive design afterwards✅
-Choose a publication date for our first blog post (Friday the 15th ) ✅
-We had lunch with one of our coaches ✅
-We had a session with one of our coaches about Apis and have now two tasks: ✅
-To build a mini- app that returns data in a json format ✅
- To create a CRUD Cycle with this mini app✅
-Plan a controller and api testing session with one of our coaches for tomorrow✅
-Retrospective about today✅
-attend the Ruby Monstas✅

July 08, 2016

-We met with our mentors @SoundCloud and showed them our work and got feedback from them and tasks for next week: - understanding oauth, and getting to know the project more through tests. We also got access to the SoundDrop root server. ✅
-We had theoretical input by one of our coaches about Servers and it was a lot to stomach 🤓 ✅
-Johanna pushed her changes from yesterday which are still WIP and did a pull request ✅
Note : When opening a new pull request the base should be sounddrop/sounddrop to avoid opening on the old repository
-We tried to deploy but noticed there were some errors, so some things were not working. So we got more tasks for the upcoming week: to get some input about: stack trace, log levels, production and development environments. ✅
-Attended Power Hour with one of our coaches : Talked about and downloaded sonic_pi and then talked about programming paradigms, especially object-oriented and functional. ✅
-Johanna walked Dayana through the changes she made yesterday✅
-We had a quick retrospective amongst ourselves✅

Ask about the power hour and Fridays, to see if it is cool to go to SoundCloud and then come here for the meeting ✅
Took a Picture with some of our coaches at Absolventa ✅
Our first Pull request got merged ✅

July 04, 2016

Today we came to Soundcloud to work here for the first time, since our coaching company’s coaches were on a day trip. After taking a picture with the LoadToCode Team and one of our mentors, we talked a a bit about concepts we had begun investigating on Friday such as the splat operator in Ruby and stringio, we also talked about the strip method.

Today, our main Goal is to get acquainted with RSpec. So to that end, one of our coaches came by to talk to us about RSpec. We started by talking about the differences between Rspec and MiniTest and then took a look at some of the SoundDrop Model and controller tests. We decided to focus on the model tests at the beginning, since they are easier to understand. We looked at the current RSpec syntax and talked about the VCR library, the difference between “build” and “create”. We also quickly went over how to run RSpec tests and how to run only a line. Afterwards we had a meeting with one of our mentors and set the goals for this week:

-Remove QR Codes ✅
-Fix the play and login buttons and improve UX a bit
-Fix the Selenium setup with Firefox to get the tests running correctly
-Begin getting acquainted with RSpec
-Prepare some questions for our Friday theory session
-On Friday we will meet our mentors again and deploy our first change.

After deciding on these goals, we also decided to hold up a short meeting each morning and one a half an hour before ending the day to go over our processes, successes and problems.

We then did our first PR for the SoundDrop app in which we erased links to QR Codes, which we won’t be needing anymore and the welcome QR path

July 01, 2016

So our first day as Jodas is coming to an endr. Today we came to Absolventa and:

-Met the Developer team and part of our coaches and had an office tour
-Took part in their stand-up meeting and presented ourselves and our project
-We had our first call with our supervisor in which we introduced ourselves and cleared some organizational stuff
-We went for lunch with the dev team
-We took part in the Dev Team "power hour" where one of the team members presented some Crystal features and some ways to improve a partial in a Rails application
- We learned about Private Methods and the Ruby Splat operator , we also reviewed the Single Responsibility Principle for classes and methods
- We set up a slack channel for our team and made sure that everybody knows about the kickoff party
- We talked about object oriented design
- We organized our Monday meeting with one of our Mentors
- We decided that on Monday we will be working learning RSPEC and writing small tests to get to know the codebase better.