Thursday, February 28, 2013

Software as a Service

Hello,

I am currently watching some really interesting YouTube videos.
They contain lectures of a course called "Software as a Service" which took place in Berkeley in Fall 2012.

So if you are interested check out the link:
Computer Science 169, 001 - Fall 2012

My notes about the videos, I already watched:

Lecture 1:
Instructions, Overview, Programming Models (Waterfall Model, Spiral Lifecycle, Agile Manifesto), Testing, Formal Methods, Productivity, DRY, SaaS
Good overview. I already knew most of the content.


Lecture 2:
SOA vs. SW silo: good explanation
SaaS infrastructure, clusters, cloud computing, fallacies and pitfalls
Pair programming: learned some new views about pair programming
Introduction to ruby: interesting language, not relevant for my thesis


Lecture 3:
All about ruby: everything is an object, poetry mode, ruby oop, meta programming, loops ...
Very interesting programing language, quite efficient syntax, little code does a lot of work


Lecture 4:
High level view of architecture: very good overview
The model view controller-pattern: how to organize data
CRUD: create, read, update, delete
Data mapper vs relational databases (good to know about), REST (good explanation)
Rails as an MVC-framework: not really interesting for me


Lecture 5:
MVC-Framework - Model: Databases & Migrations, automation
Rails cookbock: Not important for my project as I don't use rails
#1: Adding features (model, view, controllers)
#2: Add a new action to a rails app
#3: Create a new submitable form
Everything that is important and big should be stored in a database!


Lecture 6:
Debugging, RASP (Read, Ask, Search, Post): Sounds plausible
MVC: Thin controllers and views, put real code in models
Test driven design (TDD): tests implementation
Behavior Driven Design (BDD): write requirements down as user stories
User stories: 1-3 sentences in everyday language, fits on 3x5 inch card, write with customer, should be SMART (Specific, Measurable, Achievable, Relevant, Timeboxed): want to implement that for project
Cucumber and Capybara: Rails specific
UI: storyboard, am I allowed to put a storyboard in a scientific paper?
General question: Am I allowed to cite something from the Berkeley-course in my paper? Or are quotations only allowed from books and well known web sites?



Lecture 7:
MVC: the View-Layer: Haml = HTML on a diet
Explicit scenarios: part of acceptance tests
Implicit scenarios: logical consequence of explicit requirements
Imperative: specifying logical consequences, often complicated
Declarative: try to make a domain language from steps, better choice
Pitfalls: customers who confuse mock-ups with completed features, sketches without storyboards, adding cool features that do not make the product more successful, trying to predict which code you need, before you need it --> sounds all logical
Remember: debugging sucks, testing rocks
:-)
HTML: general overview, invented by IBM: not a lot of new stuff for me
CSS: introduction: I already learned about it
Comments should describe things that aren’t obvious in the code: why not what!


Lecture 13:
Measuring Productivity: Pivotal Tracker (I already created a project with pivotal tracker for my thesis)
Effective Meetings: SAMOSAS (Start, Agenda, Minutes, One, Send, Action, Set): sounds really useful
Version Control Systems: history, Git, solving conflicts, effective branching, forks, pitfall: good overview


I will update this post entry with every lecture I watch.

Tanja

8 comments:

  1. So glad you've been watching some of these - note you could embed the youtube videos directly in your blog to make things look more professional :-)

    Well done for creating a pivotal tracker instance. Can I have access to it?

    Also you mentioned that Rails MVC was not so interesting to you. Because you are already familiar with MVC? Have you ever built web applications? Or interested to try?

    ReplyDelete
  2. as far as I know you should have at least heared of MVC in a lecture (by Roland Graf?). I really like your learning speed and your enthusiasm. :)

    As you mentioned performance issues earlier:

    For benchmarking related tasks have a look at : http://www.soasta.com/products/cloudtest-lite/
    I just came across it. As a classical tool for monitoring you could also have a look at:
    http://www.nagios.org/

    ReplyDelete
  3. That's the link to my pivotal tracker instance:
    https://www.pivotaltracker.com/projects/768785
    I just added the stories I have to complete. But there are also things, like the weekly blog posts - you know how I can manage that with Pivot Tracker? I think the tool is very useful to have an overview of steps I have to do and which I already completed - but I don't know if I will use the thing with weekly iterations according to the points of each story.

    I have heard about MVC in some lectures in Salzburg. It was good to listen to the general concept again. But it was also quite a lot related to Ruby, which is not so interesting for me.

    We build web applications with glassfish in one class two years ago. And I also learned a bit of HTML, PHP, SQL. I also took a class about databases.

    Thanks Thomas for the perfomance-measuring links. I will check them out :-)

    ReplyDelete
  4. Thanks - I've requested membership of the pivotal project https://www.pivotaltracker.com/projects/768785 if you can approve that I can help you sort things out there - also there is some video on pivotal in the SaaS course - maybe you watched it already? It is quite short actually. There are some more tutorial videos that you might want to watch. The velocity and points may or may not be useful. The idea of the points is to assign complexity to the tasks - as you complete them you can start to track how fast you get things done which can help you with balancing the available time in the semester - estimating how much you can get done by when etc.

    Ruby and/or Rails might become interesting to you if you ever want to provide a cloud based software solution, since one you understand how it works it gives you orders of magnitude increases in speed of development compared to PHP, Java GlassFish etc. Anyway, it's not the priority right now I agree, although if you developed your system in Rails then your scientists could be accessing nice visualizations over the web and sharing them with their colleagues - the whole system would be accessible in a totally different way than some custom .Net or Java code. However I'm sure you should stay in your C# comfort zone for the moment ... maybe I can show you some examples of what one can do in Rails later in the semester ... :-) Or maybe just with Google Fusiontables ...

    ReplyDelete
  5. okay, so I couldn't resist, check out this google fusion table visualization of drought data in Texas: http://www.newscientist.com/blogs/shortsharpscience/2011/10/texas-rains-too-little-too-lat.html

    ReplyDelete
  6. Hi Sam,

    I added you to my pivotal project.
    Yes, I already watched the SaaS course on Pivotal (I think it was lecture 13) and I also saw the short introduction videos.
    I am quite busy at the moment watching all the videos and checking out the links you gave me ;)

    Wow - de visualization of the drought data in Texas looks cool! I should take a closer look at that. But I think for the moment I should stick to my C#-concept and get all the requirements done that Thomas sent me. After that, I can move on to new things. I am a bit afraid, that with learning so much new stuff at the moment I forget my goal - to write my three academic papers ...

    ReplyDelete
  7. if you are interested in visualizations, check out this site: http://thematicmapping.org/
    it provides a JS API for generating KMLs for GoogleEarth.

    ReplyDelete
  8. Very cool Thomas, although I tend to think that the shareability of google maps trumps google earth every time. Of course if you have a group of scientists all using Google Earth already ...

    Tanja: yes, stick to C# for the moment - don't want you to take on learning too many new things. I have access to your pivotal - I'll start adjusting the different task types for you "Feature", "Bug", "Chore", "Release". The idea is that features should be things related to your user stories and scenarios, and the others are for things you have to fix, get done, or deliver to some one ...

    ReplyDelete