2018-07-04

Elixir Project Update 4


Happy Independence day! I had several late nights at work last week, but overall I did pretty good. I decided to push the web application off until this week, but I got everything else done or almost done before Monday morning.

Last week's goals:
  • Phoenix Book Chapter 6, & maybe 7 - 1 hour
  • Second Phoenix Book Chapter 5 - 1.5 hours
  • Implement options... or else. :-(  - 2 hours
  • Clean up documentation - 30 minutes
  • Web app skeleton - 15 minutes
  • Add 5 tests - 30 minutes
While I did most everything, there were most definitely bumps in the road. In both of the books this week I came across code examples that didn't work, and with the time allotted I was not able to work out a solution. I am not saying the books are bad, the main book is still in Beta. There is good news. I found out Sunday that there is a new beta release of the first book. I downloaded it and I will go over it to see if I can resolve my issue.

While I ran into issues with coding along, I still read both chapters. I just got less out of them. This week I plan to circling back on those chapters. If I can't make any headway in a short time period, then I'll skip ahead and just read the last chapters without following along in the code. Learning the material is my goal, not debugging beta books.
Random shot from an
Elixir meetup I went to.

I got the options implemented, but it took until Tuesday Morning to get them fully implemented. I attempted to use default arguments, but I didn't understand Elixir's implementation that well, and the errors, I understood even less, but I eventually figured it out.

This week's goals:

  • Phoenix Book Chapter 7 - 1 hour
  • Second Phoenix Book Chapter 6 - 1.5 hours
  • Web app skeleton - 15 minutes
  • Initial quiz form - 1.5 hours
Since it's a holiday week I am taking it a bit easy, and easing off the Elixir a bit for this week. Also, I am doing extra for the Chinese project this week. I have a Pilot test this weekend which will give me a real feel of what to expect for the end goal. More on that in it's own post.

I mentioned early on in my updates that the more I worked on this project and learned, the more I was better able to estimate, and clean up requirements. Below is a restructured outline like I had on the first post. 

I have dropped the Chinese specific stuff because most of what I wanted to do there is actually accomplished by just adding the ability to handle optional columns. 

I also adjusted estimates, and added a section for items that were taking up my time that I had not factored into the original outline. If this new estimate holds true I should be done with this project two weeks early. 

Also, the other projects blog will be out soon. I know it's behind. :-( That's it for now, I'll post again next week. 



  • Estimate Time required. - Bottom Up Analysis
    • Total Time: 95 hours. 51 hours + repeating = ~54 hours.
      • Work through Phoenix Books: 10 hours. 4 hours.
      • Quiz generation: 24 hours. 6 hours.
        • Milestone 1: 6 hours
          • Take in a kv list of characters & definitions: 2 hours
          • Generate multiple choice questions based on list: 2 hours
          • Return a quiz data structure: 2 hours
        • Milestone 2: 6 hours
          • Generate a fill in the blank ( character writitng ) section. 2 hours
          • Generate a matching section. 2 hours
          • Add options to limit questions for each section. 2 hours
        • Milestone 3: 6 hours.
          • answer key DS. 2 hours.
          • Add optional column support 2 hour.
          • Generate 3 way match questions. 2 hour.
      • Website: 52 hours. 33 hours.
        • Milestone 1: 13 hours.
          • Site Hello world: 15 Minutes.
          • Quiz generation form. 1 hours.
          • Generated Quiz in HTML format. 4 hours.
          • Add PDF output. 4 hours.
          • Add Key page. 2 hours.
          • Update quiz generation form for question and choice options. 1 hours.
        • Milestone 2: 12 hours.
          • Add login/logout 2 hours.
          • Add functionality to save input list. 2 hours.
          • Add saved input list page. 1 hours.
          • Update form to optionally use saved input lists. 1 hours.
          • Add ability to submit xls, xlsx, and tsv. 4 hours.
          • Add the ability to manually enter word lists. 2 hours.
        • Milestone 3: 8 hours.
          • Add the ability to use multiple word lists on one quiz: 2 hours.
          • Add the ability to tag word lists: 2 hours.
          • Add ability to download xls xlsx and tsv. 2 hours.
          • Update quiz generation form for optional columns. 2 hours.
      • All the tasks that don’t neatly fit into the main categories.
        • Code – 8 hours + repeating.
          • Setup Quiz Github Repo
          • Basic code base maintenance(tests, cleanup, commits, & docs). Repeating 15 min/week.
          • Setup website Github Repo. 30 minutes.
          • Setup website under peelle.org. 5 hours.
          • Misc config/setup( packages, db, etc). 2 hours.
  • Set Deadline & milestone.
    • Deadline. 2018-10-04 ( ~18 weeks ) 2018-08-27 ( ~ 12 weeks ).
    • Milestones:
      • 2018-06-13: Quiz Gen MS 1 done. Phoenix Book Ch 1 – 3 done.
      • 2018-06-27: Quiz Gen MS 2 done.
      • 2018-07-15: Website MS 1. Phoenix Books Final Chapters.
      • 2018-07-29: Quiz Gen MS 3. Misc Tasks.
      • 2018-08-12: Website MS 2.
      • 2018-08-26: Website MS 3. Misc Tasks.
  • Break down into week by week process.
    • Chapter 1 Of Phoenix book. Take in the KV list of Q&A definition. Generate Questions based on this.
    • Chapter 2, and 3 of Phoenix Book. Generate output DS for questions.
    • Chapter 4 , of Phoenx Book. Add option to limit each question. Add FIB section.
    • Chapter 5. Add Matching section.
    • Web app skeleton/Hello world. Quiz Generator Form. Phoenix B1 & B2 Ch 6.
    • Answer Key DS. Add optional column support. 3 way matching. Setup web server, and web github.
    • Returned quiz in HTML. PDF output, Key page, Add options. Phoenix B1 & B2 Ch 7.
    • Add login/logout. Save input list. Saved input list page.
    • Make input lists usable on the quiz page. Add manual input to the quiz. Add alt format support.
    • Multiple wordlists. Tag word lists. Download alt formats.
    • Optional column support. Last of config/cleanup/testing.