Peter Struycken, Computer Structures 1-1a, 2a, 3a, 4, Offset lithographs on board, 1969
(via)
seen from Netherlands

seen from United States

seen from United States
seen from China
seen from United States

seen from United States
seen from Ukraine
seen from Ukraine
seen from United States
seen from United States
seen from Thailand
seen from United States

seen from India

seen from Türkiye

seen from Ukraine
seen from United States

seen from Ukraine

seen from Australia
seen from United States
seen from United States
Peter Struycken, Computer Structures 1-1a, 2a, 3a, 4, Offset lithographs on board, 1969
(via)
The True Danger
By Felipe Lodi
One of my friends in Belgium has a very nice device. I don’t know the actual name but let us call as Robot Maid. This Robot is a sort of disc similar to that Genius Game but with wheels under it. He is programmed to vacuum his apartment when nobody is at home. He runs every corner of his place looking for dust and when he is out of battery he comes back to his dock in order to recharge himself.
On the very first time you turn that on, he hits the walls, foot of the bed, doors and every obstacle he finds on his way. He is actually mapping his environment, or should I say his workspace. Based on how many times you need him to clean the flat, he wakes up and randomically runs for all over the place gathering dust. He also warns his owner (or master) that he has a full bag of dust and he needs to be get this empty. So far this is still made by the human being.
Given that this friend of mine is single, lives in a 1 floor flat (no steps) and spends at least 8 hours a day out, I can properly say that the Robot Maid is great to him.
The Cinema has given us plenty of examples of the dangers of artificial intelligence. Movies such as Blade Runner and 2001: A Space Odyssey, when the computer called as HAL kills the crew and assumes the control of the spaceship, are good examples of the perils of AI.
I particularly don’t believe in such things (the movies were great though) but bringing to reality I don’t think the human being will be destroyed by machines created by him. Apart of the reasonability we can simulate on robots, the human needs change as well.
But there is a kind of research I believe. I do believe that in a short period of time we are going to be hybrids. Chips and Microcomputers will be implanted under our skin first for communication, identification and tracking purposes. Considering that brain activities are mapped and scientists know the areas that are affected by emotions, sighting and voicing, electronic devices could be triggered by these human features.
Then there will be a day when we will be tracked by our GPS internally implanted. Our bosses will know how long we work during the day, our government will know when we cross the border and our family will track us through the Internet.
The end of the privacy, this is the true danger.
Not the Right Method
By Felipe Lodi
Seaports are a special segment for IT Professionals to work in, mainly because they look forward to use the latest technologies. More than this, they need that to survive. But being international trading the finality of their business is a contradictory point that commonly these technologies lack their best adoption, therefore they require further methodology than normal.
In a Seaport, every second earlier you can load a Container means a second earlier the vessel will unberth. Several different types of technology are applied on cranes, trucks, in personnel, in the offices and processes need to be tied to the tight predefined schedules.
For nine long years I worked for one of the biggest ports in Brazil. Before getting important assignments, some technical tasks were improving my knowledge in this arena. I could join several projects from kick-off meetings until production, as well some of those projects I could see them “dying” making room for new technologies.
I had the opportunity to create an integrated product to improve many manual existing procedures. To understand the whole concept of this suite of applications I have built, it is important to brief a bit about Seaport Operations.
The unit to be transported on the vessels is called Container. Although any type and size of cargo is also transported overseas, for the sake of this explanation, I will stick with the concept of the “box” Container. (They also have several types, sizes and formats). Every Container has a loading port and a destination port. Inside the Container, different types of goodies may require special care and storing.
And in the end is all about where to store and how to store that will make the difference at the best Seaports in the world. Technology is directly related to that.
As mentioned before, a contradictory point in this case means that a bad choice for methodology might lead the Project to unsuccessful late deliveries or even failing. The main challenge on the beginning was to integrate the needs from the main three teams of the Company: The Documentation Team which had the task of all system imputing dealing with the Customs too. The Organizational Team which had the responsibility to properly store by port of destination, size, type and weight the Containers on the yard. And the Operational Team that had to fetch the pre-organized Containers from the yard and load into the vessels.
During the analysis phase, several interviews took place and the first UML diagrams and Use Cases were introduced. Although the language in those documents was very clear, was quite hard to the focal points to understand as well to get into some sort of common decision.
Many solutions were proposed by me to their typical problems but still, move forward to the design phase was quite a challenge. Thus I changed to the Flowcharts instead. Boxes, conditionals and arrows linking processes were clearer to them and finally the design phase could start.
But I faced a new problem to translate in depth the Flowcharts to the developers in my design documents. A hybrid solution of Use Cases and Flowcharts was customized and attached to the architectural design, the development phase could start.
During the development, changes on current operational procedures often happened. It was very hard to maintain the documentation “alive” even though the parties were very interested on having updates from it. Due to political changes, we were asked to adapt our application to different procedures testing them during the development. As new technologies such as mobiles being used by personnel and inside trucks and cranes were really new to some of them, the test phase took place even before the application had been finished. This has broken all methodology.
Months later I wasn’t able to keep the documentation up to date. I have started to make some sort of reverse engineering on documentation. My routine in joining new analysis meetings to the algorithms was not doing well. Tests in field have brought options to the staff and as far as I could see, the best suitable choices were made though. The development running in several different streams was integrated due to my efforts and knowledge of this particular business.
Then the solution could be used in production. In the end the documentation was updated after the late delivery, manuals were deployed and training has been made to the staff.
This was a real scenario where methodology couldn’t be applied integrally. It has been proven later that lack of decision, mixed phases, streams and improper support from sponsors featured this application as difficult to maintain and perform upgrades.
Some bad results could be noticed in slow and failing operational procedures. Later on the Company has opted by buying a third party solution, as they realized that development in place requires discipline, starting from the Board of Directors.
The Four Musketeers
By Felipe Lodi
Named after the first known computer programmer Ada Lovelace, Ada Programming Language was a tentative to develop a high-level language to improve software reusing.
“The Ada language is the result of the most extensive and most expensive language design effort ever undertaken. Up until 1974 half of the applications at The Department of Defense were embedded systems. An embedded system is one where the computer hardware is embedded in the device it controls. More than 450 programming languages were used to implement different DoD projects, and none of them were standardized. Because of this, software was rarely reused. For these reasons, the Army, Navy, and Air Force proposed to develop a high-level language for embedded systems.” (Anonymous, n.d.)
Two aspects of Ada took my attention and to me they are the reason of which Ada was mainly used on embedded systems: Ada is able to handle its own runtime errors during execution and Ada supports parallel and concurrent execution of tasks.
Visual Basic was the first Microsoft’s programming language. Created to compete with C, C++, Pascal amongst others, VB was not quite a hit on the beginning.
“Visual Basic is a "visual programming" environment for developing Windows (also Web now) applications. Visual Basic makes it possible to develop complicated applications very quickly. The programmer designs windows graphically, drags program elements from the Visual Basic Toolbox and writes basic code for each element. Visual Basic is "event-driven" which means that procedures are called automatically when the end user chooses menu items, clicks the mouse, moves objects on the screen, etc.” (Anonymous, n.d.)
When Bill Gates first saw a drag-and-drop shell prototype, Microsoft bought the tool and called Ruby. Later on Microsoft married Ruby with QuickBasic launching and naming as Thunder. It would be the first version of Visual Basic.
Powerful Windows-based Applications, Web-based Applications, simplified deployment and data access, improved coding, full object-oriented constructs, XML Web services and mobile applications are some of the reasons VB became so popular. Bill Gates thought so.
It is funny that times ago, C used to be called B. Also as an alternative for ceasing the abstraction of languages such as FORTRAN, ALGOL and CPL. B language has been developed by Bell Labs to a specific machine and system. When the B language was able to compile and generate executables codes, the “new” B has finally become C and later C++.
“In 1980, Bjarne Stroustrup, from Bell labs, began the development of the C++ language that would receive formally this name at the end of 1983, when its first manual was going to be published. In October 1985, the first commercial release of the language appeared as well as the first edition of the book "The C++ Programming Language" by Bjarne Stroustrup.” (Soulie, 2008)
Currently C is base to several programming languages and script languages. PHP, C# and JavaScript are among them.
Sun Microsystems says that Java is revolutionary. From its beginning the intention was to connect devices and computers turning them smarter and more entertaining.
“In the early 90s, extending the power of network computing to the activities of everyday life was a radical vision. In 1991, a small group of Sun engineers called the "Green Team" believed that the next wave in computing was the union of digital consumer devices and computers. Led by James Gosling, the team worked around the clock and created the programming language that would revolutionize our world – Java.” (Anonymous, n.d.)
Nowadays Java competes mainly with C#, but its countless open source libraries, APIs and frameworks led the language to be very popular. Recently acquired by Oracle, Sun Microsystems has a big challenge to keep Java’s freedom.
Let’s wait for the next chapter.
REFERENCES LIST
Anonymous, n.d. The Ada Programming Language. [Online] Available at: http://groups.engin.umd.umich.edu/CIS/course.des/cis400/ada/ada.html [Accessed 5 September 2010].
Anonymous, n.d. The History of Java Technology. [Online] Available at: http://www.java.com/en/javahistory/ [Accessed 5 September 2010].
Anonymous, n.d. Visual Basic. [Online] Available at: http://www.startvbdotnet.com/dotnet/vb.aspx [Accessed 5 September 2010].
Soulie, J., 2008. History of C++. [Online] Available at: http://www.cplusplus.com/info/history/ [Accessed 5 September 2010].
Portable Bubble
By Felipe Lodi
My contractor asked me to develop a solution for his client where I had to build a small program for budgeting. His client has offices in America, France and Belgium. Each of these has something around fifth employees. Each employee has his own computer.
After all requirements have been gathered and all technical design has been documented, I travel to his offices and compile a different version of our software to each of his employees.
In a computer-world with no machine independence, this would be the scenario. Of course that the above situation is a hypothetical situation, it never has happened (at least to me).
The same scenario, using current technologies as well the software portability we can use nowadays, would be much different where our team would build just one version of the software and use the Internet to send the updates to the client. Taking into account that all employees’ computers have the same architecture, this is really possible.
Therefore, the portability, I would say, is more than important, it is essential. Technologies, languages and business wouldn’t survive without it.
Glenn says in his book: “With the development of third-generation languages, the goal of machine independence was largely achieved. Since the statements in a third-generation language did not refer to the attributes of any particular machine, they could be compiled as easily for one machine as for another. A program written in a third-generation language could theoretically be used on any machine simply by applying the appropriated compiler.” (Brookshear, 2009)
However, we still have some barriers due to the singularity of operating systems and architectures. If I create an application, let’s say, a Windows Forms Application this is supposed to work only in some versions of Windows. Another version and compilation would be required for Windows Mobile operating system. Thinking that they are from the same vendor, I consider this an obstacle. Despite the fact that this conversion is relatively easy only requiring a different version of the Framework, some functionality may be limited.
For running .NET in Mac OS X, for example, Rotor does the trick: “Rotor would be a round-about way of porting .NET to Mac OS X. Rotor is a stripped-down version of .NET with simplified internals and far fewer public types than the roughly 4000 that are part of .NET. (Although Rotor is an implementation of the ECMA CLI, it has a few more public types than the approximately 300 specified in ECMA). Rotor doesn’t have Windows Forms, ASP.NET, ADO.NET, and many other things that make .NET the compelling development platform that it is.
Still, porting the core would be the first order of business, so if Microsoft has plans to bring .NET to Mac OS X, Rotor could be a first step” (Jepson, 2002)
The keyword for achieving high levels of independence is compliance. The teams that I work with usually gather information about the “audience” of a software or solution. I would say that this is specified before the first line of code. In which operating system, network and even configuration of the stations, memory RAM and processors may be part of the list that describes these “clients”.
Thus, as developer, we are used to choose a platform from the very beginning and get specialized on that as by having a complete knowledge of different languages and architectures might represent a superficial awareness rather than the “in depth”. This is a personal compatibility that every professional must have. Besides that, your environment is your bubble. If you create .NET applications for Windows operating systems, don’t care about Mac or Sun, I would say. This way I have avoided current problems of importability.
Moving applications to the Web, the Cloud and all good shared things we can develop with, in my point of view, is a next (current) step of portability whereas Websites are being used regardless of the platform, server’s structure, operating systems and client’s machines. A website can be developed at any place on the east using .NET when at the same time a web browser at west will render the pages almost perfectly.
I meant perfection and its abstraction, as web browsing which is cross-platform but never was cross-browsing. Not fully portable though.
REFERENCES LIST
Brookshear, J.G., 2009. Algorithms. In Computer Science an Overview. 10th ed. p.265.
Jepson, B., 2002..NET for Mac OS X? [Online] Available at: http://www.oreillynet.com/mac/blog/2002/04/net_for_mac_os_x.html [Accessed 4 September 2010].
Getting a Foot in the Door
By Felipe Lodi
It has been copied from our applied book I assume. But better title than that to the article is difficult to figure out. Indeed this is the technique I’ve been using for the past years. In between Projects that I am coder, architect or even project manager, I really wasn’t aware of methodologies such as top-down or bottom-up as part of stepwise refinement.
Glenn says what it follows about both techniques: “…stepwise refinement is a top-down methodology in that it progresses from the general to the specific. In contrast, a bottom-up methodology progresses from the specific to the general.” (Brookshear, 2009)
And funny that is, I realized that I had ever used the bottom-up one method.
But this was a long time ago. Since I started to use Frameworks, Objects Models and Libraries, no further efforts were required to do as much as you need to achieve your needs. Taking the given problem on the first discussion where I was requested to seek a string inside another one, strings have become classes where I can instantiate an object and easily use, let’s say, indexof and it does the job perfectly, I would say.
The same applies for generic collections and the method sort. It is so easier than using the insertion sort algorithm where we need to “…indentify the constraints under which we will work...sort the list within itself” (Brookshear, 2009)
Amongst several routines (or algorithms), the Windows API is commonly used to manipulate the Operating System behavior, mostly the shell. As well the Windows Registry (or the Windows configurations database) may be manipulated by these instructions and as developer I can get rid of hard understanding and concentrate myself on the business itself.
“Windows APIs are dynamic-link libraries (DLLs) that are part of the Windows operating system. You use them to perform tasks when it is difficult to write equivalent procedures of your own. For example, Windows provides a function named FlashWindowEx that lets you make the title bar for an application alternate between light and dark shades.” (Microsoft Corporation, 2010)
Now imagine how hard would be to achieve the same above by coding. Several routines manipulating pointers and binaries, I would say that it is the end of the algorithms.
Working on this big project currently as I am, amongst hundreds of objects and their methods, functions and instances we are close to use only if’s and cases. Whiles were replaced by foreaches too.
Other day we needed a way of zipping and unzipping files in order to create some sort of caching of uploaded files in SharePoint. Neither the oldest professional on the team thought on developing this from the scratch. How many lines of coding we prevent when we downloaded a third party assembly. The work has been done very fast and no one had to be aware of the algorithms behind.
REFERENCES LIST
Brookshear, J.G., 2009. Operating Systems. In Computer Science an Overview. 10th ed. p.220.
Brookshear, J.G., 2009. Operating Systems. In Computer Science an Overview. 10th ed. p.228.
Microsoft Corporation, 2010. Walkthrough: Calling Windows APIs (Visual Basic). [Online] Available at: http://msdn.microsoft.com/en-us/library/172wfck9.aspx [Accessed 20 August 2010].
A Miracle Called Computer Systems
By Felipe Lodi
From entire big rooms to the pockets, Computers Systems nearly reach perfection. For more than 50 years they work in a very similar way. The components of this incredible machine have been changed but not the core interactivity of action and reaction.
As user you expect achievements from the computer as well the computer expects inputs from you. Apart of great technology improvement, this interactivity for sure is what has changed the most.
Computer Operators were used to be hired to control the Computer System on the past. They had to input the needed commands and they were supposed to know which tapes and cards had to be retrieved before the next execution. (Brookshear, 2009) This was the level of interaction by that time. Furthermore it was already observed the concept of Job as the execution had to wait in a queue to be grouped and processed in batches.
With some great reading about Operating Systems plus my experience, I am inclined to disagree about the given dual definition and also disagree that they conflict. An Operating System manages the limited resources whilst isolates the user from the hardware. Therefore the sentences complete each other. Friendly is how interactive the system is and effective is how good the system performs his tasks.
A good example of this behavior is the slots where you can connect SD Cards. You just took some photographs (and your camera amazingly saved those in a very small plastic/metal card) and then you stick the card into a predefined size slot in your Laptop. Your Operating System has the Device Drives installed to communicate with the controllers and make it work.
The Device Driver “translates generic requests into the more technical steps required by the device assigned to that driver” (Brookshear, 2009) isolating the user from the bare-bones hardware. And this is transparent to the final user.
An Utility Software (a piece of the Operating System) automatically runs, waits from a user confirmation and starts copying the files to the computer. Behind the scenes, the activities needed to execute the whole task were already defined. These activities are called Processes. Schedulers organize how they will be executed and dispatchers will remove completed processes from the queue. Very similar than how the old fashion Computer Operator’s work were used to make manually.
Memory slots were allocated to this execution, the scheduler allocated CPU to the processes (Oracle, n.d.), instructions were filed, files to be copied were listed and what the user sees is a fancy little window with his photographs being copied to the Hard Drive (that normally doesn’t reflect reality but when it stops the user knows it has been finished).
Although the user thinks that his Computer is doing only one task, several processes were listed and executed in time-sharing/multitasking. For example whilst the files were being copied, probably the Anti-Virus Application was verifying each byte of the file seeking for viruses and malwares.
How these tasks mutually cooperated using and administrating machine resources giving feedback from the performed work to the user (the file copying in a fancy window) is the beauty. I think I can call that a miracle.
REFERENCES LIST
Brookshear, J.G., 2009. Operating Systems. In Computer Science an Overview. 10th ed. pp.122, 130.
Oracle, n.d. ts_dptbl– time-sharing dispatcher parameter table. [Online] Available at: http://docs.sun.com/app/docs/doc/816-5174/ts-dptbl-4?a=view [Accessed 12 August 2010].
Computer History, A Personal Perspective
By Felipe Lodi
As developer, 15 years ago, my first professional initiative was to create software for hardware stores in Brazil. Made with Clipper 5.2 I had different versions for my different clients and a very smart way of enabling and disabling modules depending of the (verbal) contract I got with each.
The software itself was not enough, since they needed some check points on their counters and at least one computer using the financial module. Normally the manager or owner had this module enabled on his station on the background office.
Because of this common scenario, I was presented to the concept of networking. There were no dedicated servers as I could choose one of the stations to store the Database and be the server as well. All computers had to talk to each other conceptually.
The solution I had by that time was the Novell NetWare 3.12. In this solution I could basically have the stations interconnected and they did not have to have Hard Drive, which used to be too expensive. A Boot ROM Chip on each network adapter was essential though. My proprietary software only required DOS and this infrastructure was sufficient.
A ring network topology was compulsory and sometimes we were used to lost the network connection because of chewed cables (Rats in warehouses were common). Bradley Mitchell describes the Ring Topology as when every device has two neighbors and the information travels in one chosen direction. (Mitchell, n.d.)
Years later the requirements from my clients increased as well my development skills improved so I upgraded my software to a graphical interface version using Delphi. Apart of the knowledge curve to create the new version, the infrastructure again had to follow the needs.
A Microsoft Windows NT 4.0 was the right choice and a sensitive upgrade on my client’s computers had to happen. As a Client/Server application in some cases even using SQL Server 6.5, my software required a higher availability. Then at least one dedicated server was configured for each client. Most scenarios had the same computer with PDC, BDC and Database Server roles.
Once again Bradley Mitchell describes the Client as computers with network software requesting and receiving information over the network. (Mitchell, n.d.).
This type of network by that time did not require Boot ROM Chips neither ring topologies. We had more flexibility using a small 6-ports HUB and 100 meters independent cables. Different layouts to my client’s networks were possible too.
How hard was to make a Novell or NT networks work properly? How many issues I had to address besides coding which I was supposed to do?
In my opinion, I couldn’t make better comparison between these two types of networks and topologies with the actual wireless networks. Nowadays, connect several devices to the wireless router is easy. The system makes the whole job for you. Behind the scenes there are the drivers, protocols and so on.
Back to the past, if I were able to use wireless technology in my clients I would have made cheaper my service and even happier my clients.
What is next?
REFERENCES LIST
Mitchell, B., n.d. Introduction to Client Server Networks. [Online] Available at: http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm [Accessed 4 August 2010].
Mitchell, B., n.d. Network Topologies. [Online] Available at: http://compnetworking.about.com/od/networkdesign/a/topologies.htm [Accessed 4 August 2010].