Author: admin

  • The importance of identifying the assumptions Behind Every Problem

    My estimable colleague Rafik Ben made a blog post concerning a problem.

    For reference, here it is: http://routetomastery.com/blog/2017/01/08/has-pair-with-some-problem/

    So what’s so good about Rafi’s problem?

    Well like most things in the world, the problem, is not the actual problem. When it comes to computer science, the *actual* problem lies in identifying or understanding it. And the assumptions one makes are no less important.

    Let’s see this in example:

    > A man and his son are driving in a car one day, when they get into a fatal accident. The man is killed instantly. The boy is knocked unconscious, but he is still alive. He is rushed to hospital, and will need immediate surgery. The doctor enters the emergency room, looks at the boy, and says…

    > “I can’t operate on this boy, he is my son.”

    > *How is this possible?*

    It’s one of those things where you either have the answer instantly or you will never get it. It’s because your underlying assumptions and expectations were hidden and/or incorrect. The thesis of this post is this: identify the assumptions inherent behind every problem. For in doing so, you will be more likely to solve it successfully.

    Assumptions area always inherent in a problem

    Every problem has its own assumptions. And these assumptions will drive very different solutions. For example, in the post Rafi made:

    • what if one assumes that the input into the “Pair with sum” function was a disorered list vs ordered list?
    • What if one assumed that the input contained invalid data?
    • Each assumption would in turn require it’s own unique solution. And those solutions might be drastically different. It should be remembered that not all solutions were created equal.

     Assumptions to consider when formulating algorithms

     Some assumptions which I feel are important when considering problems:

    1. What are the domain/range of the inputs and outputs? (e.g. positive or negative, above zero or less than 400)
    2. What are the characteristics of the inputs/outputs? (i.e. divisible by 2, integers only, irrational numbers?).
    3. The data structure(s) of the inputs/outputs?
    4. Can you think of a structure that will make your algorithm more efficient.
    5. Is near enough, good enough? What are the costs of inaccuracy? Can we later fix inaccuracies?
    6. Time limitations?
    7. Computational power limitations?
    8. Human factors:
    • Remember, algorithms are created for the user. You might have to compromise on efficiency and/or accuracy in order to meet this need.  For example: I am positively sure that Google can do a  lot better in its search results: but the boffins there are acutely aware that it’s bad business if the user is left waiting for a search result for more than a few seconds. Consequently, there are some compromises on accuracy in favor of speed. These factors are essential when considering a solution to a problem.

    Another human related issue: the problem must be understandable to the coder, and easily maintainable:

    1. Can you easily understand the problem by looking at it? Easily understood code makes maintenance a breeeze.
    2. What parts do you think will change?

    Summary

    Understand the problem and its assumptions, and you’re halfway there.

    Here is a gist basically listing the above:

    https://gist.github.com/BKSpurgeon/69f624f959e80a7842a2a319d797f120

  • Roof Modelling

    When you model the roof, pay attention to how the flashing will work.  In this video I am explaining, the roof flashing explaining the error in modelling.

    Few things to remember when modeling roof

    •  Roof need support everywhere.
    • Take care of roof slope and gutter requirements
    • Gutter will require 65 mm gap clear if the gutter support is to run under the gutter.
    • It is not necessary for the gutter support to run right through. Gutter support can stop at certain members and continue from the other side of members.
    • It should be possible to flash the roof to the design requirement. Do not model the roof in such a way that flashing is not possible

  • Associative functionality in the Autocad .net API

    Associative functionality in the Autocad .net API

    Question: What is the most exciting thing since sliced bread?

    The answer is AutoCad’s associative framework. It’s been two years since it’s been released, and it’s arguably one of the most powerful features of AutoCAD which has now been exposed to .net. You’d hardly know it exists because hardly anyone seems to talk about it in the forums. Anyways, I”m really excited about this new tool and I hope to be walking you all through it in the upcoming few weeks.

    There’s a tutorial out there:

    http://au.autodesk.com/au-online/classes-on-demand/class-catalog/2014/autocad/sd5217

    but I suspect it might be too hard-core for most of you so I really want to simplify it and walk you through the process. I hope you’ll derive as much pleasure from devouring it, as I will have producing it.

    What is the benefit?

    It’s just really really cool

    Ben

  • How to Copy Tekla Component Settings Between Two Models (Tekla Tips)

    There is more than one way to do this. But this could be the easiest:

    Other ways are setup your computer to read the favorite componets from a location, Set up the network such that all Tekla machines load their favorites from a location.

    You can download the custom files from the link given below

    Click to Down load the files

     

  • Selections: Pick and Drag Selections

    Pick Selection and Drag Selection:

    Here is the video:


    Welcome to Tekla training.

    In this video we are going to learn how to make selections.

    Pick Selection:

    Single objects can be selected by holding down the mouse key.

    Multiple objects can be picked by holding down the Ctrl or Shift key. if one object has to be deselected from the selected use Ctrl+ mouse key to deselect.

    Drag Selection:

    To select multiple object with a single drag of the mouse. Hold down the mouse key and drag

    Right to Left: Objects that are fully or partly inside the drag window will be selected.

    and

    Left to Right: Objects that are fully inside the drag window will only be selected.

  • How to insert a reference model into Tekla

    This post begins our inaugural series on Tekla detailing.

    We hope you enjoy it as much as we’ve had the joy in creating it. Here it is below.

     

     

  • A new blog series on how to use Tekla

    We’ve got some of the best Tekla technicians in our house, and given we’ve been so busy it’s been very hard to get a moment to educate the general public on Tekla.

    This blog series attempts to remedy that: we start from the very beginning and will post all manner of educational information to allow for a pure beginner to eventually master Tekla.

    And best of all: the information is free!

    I hope you gain something out of it. And let us know if you want to know anything in particular.

     

    – Tek1 Team

  • How to open a Tekla Model

    Open a Tekla model                       

    To open a tekla structure model multiple options are available as:

    1. File> Open

    2. Keyboard user input Ctrl+O. (Default tekla command)

    3.Using the open icon shown as a folder image

    How to open a Tekla model
    How to open a Tekla model

    Either of the methods can be used to open a tekla structure model , but before moving to the open dialogue display the existing model has to be “save’ or ‘don’t save’ dialogue will be displayed  to confirm the existing model  actions (Since only one model can be worked on in tekla). Once the selection is made we can move to the open model dialogue to proceed to the next model.

  • What does GroupBy do – Simple Explanation (Linq)

    What is GroupBy meant to do – Simple Explanation

    As always we will try to formulate a simple explanation of what is really going on.

    Airport

    Imagine you are at an airport and (as always) there is a queue and planes are delayed. See below. What you will immediately notice is that all of the passengers are grouped together promiscuously – standing around in slumps in no particular order. Every body is mixed up with each other.

    But, when you get into the plane, everybody is grouped into three distinct orders:

    1. First class
    2. Business class
    3. Third class. These classes are defined today by folks’ ability to pay. Unlike the olden days. Anyways, let’s move on.

    That’s basically what group by does. It takes a promiscuous group and separates them into distinct orders – in this case, three distinct groups of people: first, business and third class.

    So now you can say:

    • Get me all the names of all the people in first class.
    • Get me the names of all the people in the middle class who live in Europe.

    And it’s as simple as that! As for the technicalities: please refer to the MSDN documentation – hopefully reading it won’t cause too much discomfort.