Olivet University - Olivet Institute of Technology

RSS

Posts tagged with "engineering"

Sep 3

Teach Yourself Programming in Ten Years

easiest-way-to-learn-cpp-in-21-days

Why is everyone in such a rush?

Walk into any bookstore, and you’ll see how to Teach Yourself Java in 7 Days alongside endless variations offering to teach Visual Basic, Windows, the Internet, and so on in a few days or hours. I did the following power search at Amazon.com:

     pubdate: after 1992 and title: days and
      (title: learn or title: teach yourself)

and got back 248 hits. The first 78 were computer books (number 79 was Learn Bengali in 30 days). I replaced “days” with “hours” and got remarkably similar results: 253 more books, with 77 computer books followed by Teach Yourself Grammar and Style in 24 Hours at number 78. Out of the top 200 total, 96% were computer books.

The conclusion is that either people are in a big rush to learn about computers, or that computers are somehow fabulously easier to learn than anything else. There are no books on how to learn Beethoven, or Quantum Physics, or even Dog Grooming in a few days. Felleisen et al. give a nod to this trend in their book How to Design Programs, when they say “Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies.

All-in-all, a very interesting post by Peter Norvig, read the full article here.

IBM SEQUOIA - WORLD’S FASTEST COMPUTER

IBM Sequoia is a petascale Blue Gene/Q supercomputer constructed by IBM for the National Nuclear Security Administration as part of the Advanced Simulation and Computing Program (ASC). It was delivered to the Lawrence Livermore National Laboratory (LLNL) in 2011 and was fully deployed in June 2012.


On 14 June 2012, the TOP500 Project Committee announced that Sequoia replaced the K computer as the world’s fastest supercomputer, with a LINPACK performance of 16.32 petaflops, 55% faster than the K computer’s 10.51 petaflops, using 123% more sockets than the K computer’s 705,024 sockets. Sequoia is also more energy efficient, as it consumes 7.9 MW, 37% less than the K computer’s 12.6 MW.[wikipedia]

Pictures from the Tech Model railroad Club at MIT, late 1950

Open source is tightly entrenched in the Hacker Ethic. The term hacker is defined today as a person who enjoys exploring details of programmable systems which was traced in the late 1950’s MIT’s computer culture. Several members of the Tech Model railroad Club or TMRC, grouped and formed the nucleus of MIT’s Artificial Intelligence Lab. These individuals were so into how systems worked. And the word HACK had long been utilized in describing elaborate college pranks devised by MIT students. But TMRC members used the term to describe a task instilled with innovation, style and technical intelligence which led to projects taken not merely to complete beneficial goals but also with some intense creative interest which was called a Hack.

The Commodore PET (Personal Electronic Transactor) was a home/personal computer produced from 1977 by Commodore International. A top-seller in the Canadian and United States educational markets, it was Commodore’s first full-featured computer, and formed the basis for their entire 8-bit product line. [source: wikipedia]

Software Engineering Distilled

This is my attempt at distilling software engineering into 20 tweets (<140 characters). Not entirely sure that it is wholly satisfactory. Please try your own!

Plan your process. Share it and keep it under constant revision. Use a well understood process template. Drive process improvement. #softeng
Identify your stakeholders. Ensure continuing engagement. Collectively own major tradeoffs. Get management buy-in. #softeng 
Work out boundaries of your problem & framing assumptions about behaviour of the real-world. Establish extent of your confidence in these. #softeng 
The biggest determinant of success will be the skills & experience of the team. Choose well. #softeng 
Build requirements collaboratively with stakeholders alongside a schedule of incremental delivery. Jointly plan test & evaluation. #softeng 
Confront risks early. Changes get much more expensive as development proceeds. Organise to minimise these costs. #softeng 
System evolution is inevitable. The system will change the application setting. This will require system change in turn. #softeng 
Build a long-term development roadmap. Measure progress against it. Keep it constantly updated. #softeng 
System requirements: security, reliability et al determine architecture. Changes have big impacts. Think about usability at outset. #softeng 
Eschew novelty. Use established patterns. Build for understandability. Distrust clever solutions. Reuse whenever possible. #softeng 
Keep solution architecture as close as possible to problem structure. focus on getting the component interfaces right. #softeng 
Use modelling to ensure you have a good shared understanding of problem structure. If you can embed model in a language do this. #softeng 
Keep tight fine-grain version control of all your artefacts. Organise, link, tag & add metadata. You never know when you need it. #softeng 
Take nothing on trust, most of all your own instincts about what is correct. #softeng
Invest in your tools. Invest in your skills. #softeng 
Regression tests. Enough said. #softeng 
Pin down uncertainty using focussed prototypes. Exploit maths, domain specific languages, functional programming & formal methods. #softeng 
Do not let your client persuade you into unrealistic schedule commitments. Leave time & budget to reengineer & refactor. #softeng 
Effective management demands a deep knowledge of and commitment to engineering. Avoid know-nothing project managers. #softeng 
Organise for learning. Measure & assess. Debate quality. Reflect on successes & failures. Do better next time. #softeng


Source: Software Engineering Distilled

Aug 8
IBM 7094
First installed in September 1962 with a cost of over $2Million(around $14.5 Million today)

IBM 7094

First installed in September 1962 with a cost of over $2Million(around $14.5 Million today)

Aug 8
ENIAC, the first electronic general-purpose computer.
Finished on February 14, 1946

ENIAC, the first electronic general-purpose computer.

Finished on February 14, 1946

Aug 6

Google PageRank checksum PHP algorithm revealed

In a blog entry, the Google PageRank checksum algorithm was revealed.

The Google PageRank functionality in Google Toolbar works by querying Google’s server for information on the PageRank of a specific page. This might seem easy enough to implement in your own program/website, but the problem is that the toolbar calculates a checksum on the page URL before querying the server, and the server only responds if the checksum is correct. Fortunately the checksum algorithm was reverse engineered from Google Toolbar 7. I was provided the hand decompiled version of the algorithm in C from a friend. Then I went ahead and rewrote it in PHP for web development usage. You can find both versions below.

As an example, the query URL for the page ‘http://en.wikipedia.org/wiki/Cypherpunk’ is http://toolbarqueries.google.com/tbr?client=navclient-auto&features=Rank&q=info:http://en.wikipedia.org/wiki/Cypherpunk&ch=783735859783

Any other query with a checksum other than 783735859783 will result in a ‘403 forbidden’ response.
Enjoy.

PHP CODE:

<?php
/* the floating point hacks are due
   to PHP's bugs when handling
   large unsigned integers */
functionfch($csm)
{
    if($csm< 0)
        $csm+= 4294967296.0;
    $a= (int)fmod($csm, 10);
    $t= 1;
    $b= (int)($csm/ 10);
    while($b) {
        $c= $b% 10;
        if($t)
            $c= (int)($c/ 5) + ($c* 2) % 10;
        $b= (int)($b/ 10);
        $a+= $c;
        $t^= 1;
    }
    
    $a= 10 - $a% 10;
    if($a== 10)
        returnord('0');
    
    if($t)
        returnord('0') + (int)(($a& 1 ? $a+ 9 : $a) / 2);
    returnord('0') + $a;
}
functionchecksum($str)
{
    if(strlen($str) == 0)
        return0x1000;
        
    /* the floating point hacks are due to PHP's bugs when handling integers */
    $a= 5381.0;
    for($i= 0; $i< strlen($str); $i++)
        $a= fmod($a+ ($a* 32) + ord($str[$i]), 4294967296.0);
    if($a> 2147483647.0)
        $a-= 4294967296.0;
    $a= (int)$a;
    $b= 0.0;
    for($i= 0; $i< strlen($str); $i++)
        $b= fmod(($b* 64) + ($b* 65536) - $b+ ord($str[$i]), 4294967296.0);
    if($b> 2147483647.0)
        $b-= 4294967296.0;
    $b= (int)$b;
    
    $a= (($a>> 6) & 0x3ffffc0) | (($a>> 2) & 0x3f);
    $c= (($a>> 4) & 0x3ffc00) | ($a& 0x3ff);
    $d= (($c>> 4) & 0x3c000) | ($c& 0x3fff);
    $c= ((($d& 0x3c0) << 4) | ($d& 0x3c)) << 2;
    $a= $b& 0x0f0f;
    $e= $b& 0x0f0f0000;
    $b= (($d& 0xffffc000) << 4) | ($d& 0x3c00);
    return($b<< 10) | $c| $a| $e;
}
$csm= checksum($page);
printf($PR_SERVER. "%s&ch=7%c%u\n", $page, fch($csm), $csm);
?>
The author of the PHP code is
Aug 3

Productivity vs. Guilt and Self-Loathing

The guilt can be crushing. Everyone seems to be getting stuff done, except you. You drag yourself out of bed, go to work, start checking email, start deleting, then poof, it’s noon. Lunch, perhaps at your desk, then some awful meetings, then it’s 3pm. You start REALLY working, then you start feeling decent but then it’s 5pm or 6pm. It’s time to start getting home. You feel like you didn’t really get a lot done today so you’ll work late - just tonight - to catch up.

Here’s what I do when I’m feeling non-productive and guilty. Again, watch the video for more details, it’s not selling anything and I go into more detail. I need to just write a small book on this..

  • Stop Checking Email in the Morning
  • Don’t make Guilt Piles 
  • If it’s important, Schedule It. 
  • Measure, then Cut 
  • Do smaller things 
  • Let go of Psychic Weight 
  • Schedule Work Sprints 
  • Stop Beating Yourself Up

Read full post here : Productivity vs. Guilt and Self-Loathing

Why can’t the IT industry deliver large, faultless projects quickly as in other industries?

A interesting and insightful discussion emerged as to why the it industry can’t deliver large faultless projects quickly as in other industries that deal with other huge projects, such as Airbus or skyscrapers.

Read full discussion here : http://programmers.stackexchange.com/questions/158640/why-cant-the-it-industry-deliver-large-faultless-projects-quickly-as-in-other