Information TechnologyPosted by David Svarrer 13 Apr, 2010 22:26Securing
your Software Business
Software cannot be patented. Methods is
on the way out of the patenting system, such that only physical inventions as
such can be patented. Thus, a methodology for producing something (like
medicine) will not be patentable pretty soon.
Software can be copyrighted. You cannot
protect yourself directly from reverse engineering, so if you write software,
it is most likely that someone can reverse engineer it and get the source code
out of your efforts.
The first way I propose that you
protect software (I was not aware of that you were thinking about software), is
to stay ahead of the crowd. The Time To Market (TTM) factor in Software is
crucial. Thus, many projects takes too long to get to the market. The team size
to develop the software is many times chosen wrongly. Either too big a team
which spend too much time managing themselves compared to the task at hand, or
too small a team which cannot cope with the task at hand in time. The
saddle-curve-optimation is here the clue to choice of team size.
Now - staying ahead of the crowd
doesn't mean that you publish your software. It also doesn't mean that you
don't do something to protect it. But it means, basically, that you make your
new releases so sufficiently quick, so when someone copying you have copied
you, they are still behind, because you are ready with a new release - faster,
smarter, more lightweight (or heavy weight), outsourced version, insourced
version, thin client/fat client - the possibilities are endless during the
natural life cycle of software.
You combine that one with secrecy - one
of the 3 below. So you can for instance specify crucial parts of the software
to be developed generically by one team who does not know that there is another
team, developing another generic part of the software. And together those two
softwares completes one another. That way the developers can also not run away
with the work from you.
Most, if not all, compilation processes
leaves residuals of the source code in the compiled code. Therefore, you can
benefit from using a code anonymiser, which will replace all variable names
with a meaningful name with variable names picked as random letters, ie.
xyw73uu, as7j32u, whjwe88 etc. - thus rendering the entire code meaningless to
read, if the reverse engineering have success in finding head or tail in it.
You can also fill in pieces of random
data into the code, and also make things such as self-encryption
(self-scrambling), where you take minor - but crucial parts - of the executable
code and encrypt it in the code itself, such that that part shall be decrypted
when running it.
Finally, you can encapsulate parts of
the code in a block comprising of CPU, memory, I/O and everything - ie. a
single board processor - and have crucial parts stored in there, communicating
to the main software.
IN order to make the software difficult
to debug for those who would like to attack the code that way, after having
re-engineered it, you can add parts to the code which will never be executed, unless
certain criteria are not fulfilled, and if they are, the code will crash
helplessly.
Oh, I am forgetting: Put all strings in
the code into a string library/database which is locale sensitive. It has a
very positive effect too, in that you can now change language by a click of a
mouse, but it also has that positive effect that inside of the code, there is
nothing to guide the cracker as to what is happening where - what is printed
where. If you add to that that you will encrypt those strings, and for instance
use parts of the hardware based software (incapsulated) to generate the key for
choice of direction in for instance case-statements, then you have made the
work very hard, even for the best of crackers.
But the best way, still, is to make
quality software - top quality software. Why ?
Nobody does that, now... And a chance like a snowball in hell, that any
of the crackers would do that !!
Information TechnologyPosted by David Svarrer 17 Jan, 2009 13:16IT, ICT and Software Development - whats the difference ?More than 10 times per day, we are asked by new students, parents, corporates, what is the difference between IT and Software Development.
Software Development is the corner stone behind any IT. Yet, Software Development is a part of IT. IT means Information Technology. ICT means Information and Communications Technology. The C has been added, as IT over the most recent 2 decades has played a more and more important role in communications.
The C in ICT, and Digital transmissionCommunication used to be analogue. It means - signals were transmitted in a way such that the signal itself could be presented for instance to a loudspeaker or a Television Tuner or a Radio-Tuner and it would produce sounds such as voice, music, picture etc.
Todays technology is Digital. Digital technology means that all the analogue information - sound, radio-waves etc - are converted into digital signal-systems. It means that the sound, picture etc. is sampled by use of very advanced devices called AD-converters (Analogue/Digital Converters), which as an example samples the sound level from a microphone some 44,000 times per second and converts each sampling to a figure in the range from 0 to 65535, representing the amplitude of the signal at each time of the sampling process. In order to become digital, in the binary range of 0's and 1's (zeroes and ones), further transforming takes place, such that the signal sampled every 1/44,000'th second is now represented by a binary figure in the range from 0000000000000000 to 1111111111111111 (there are 16 zeroes and ones here at the left).
Now, in order to transmit the digital figures, the ones and zeroes are now sent, one by one, over the wired line. Unlike the analogue signal, the digital signal can be error-controlled, thus, it is possible to add somer redundancy to the transmission of a digital signal, which can be used to recover the correct signal in the event that parts of the digital transmission has got lost. This is the reason why you for instance hear cristal clear signal from a CD playing, compared to the noisy signal from a tape-recorder or an old record-player. The signal has not been distorted, and as long as you keep the CD sufficiently clear of scratches, the computer in the CD-player can compensate for the errors found, and play flawlessly even if there are some level of scratches.
In older technology - still used world wide in many radio-stations - the signal is still analogue. That is why you can still on the radio hear lots of noise when you are not really tuned into the channel. In the near future, when signal transmission goes digital, the radios/TV-sets can compensate to quite a large extent, thus leaving you with crystal clear signal / sound even if the line falls out from time to time.
Software Development is Key in thisAll this - is enabled by computer technology. All this is done by making software which handles those things. This software can easily be developed all over the world. The excuse many Kenyans/Africans has used for themselves - that "We can't do that" is no longer valid. Glance over the big pond - and gee - Obama is inaugurated in a few days. He has Kenyan, African roots - yet against these excuses for performing - he is now entering the most powerful seat in the world.
Therefore - there is no more excuses, as you can just take up this profession and you will be heading for the stars in some years.
IT and Software DevelopmentNow - the difference in the public perception is that IT covers the
use of software, (for instance Microsoft Word, Open Office, AutoCAD, etc.) while Software Development in the natural context of this, covers the
development of software, which now does not have any limitations - as Software Development is the art and engineering discipline of producing systems for computers.
Thus, Software Development is the recipe for the cake, while IT is the cake.Therefore, if you at any point are thinking about IT as a career, it is important that you distinguish between producing the software and just using software.
Kind regards
Digital Age Institute Ltd.David Svarrer, CEO
Software Research&DevelopmentPosted by David Svarrer 03 Jan, 2009 21:48What is the difference between# Software Programming
# Software Engineering
# Software Development and
# Software Production
?
Many people ask us, what is the difference between Programming, Software Engineering, Software Development and Software Production.
Programming is the art of writing code in a Program Language such as Java, Prolog, C++, Small Talk, C++, Java, C#, etc. etc.
Software Engineering is the art of solving a task already defined, by use of not only programming, but also UML, UP, Data Analysis, Data Design, and a range of methods/systems such as Agile, RAD etc.
Software Development is the art of solving a problem for an End User, a Client from the "Real World", by help of making software for computers. It can be in virtually any area - Technical, Instrumentation, Control Systems, Administratively, Enterprise Resource Planning, etc. etc.
Software Production is the industrial way of Software Development, where systematic approaches for efficiency are applied to automate those part of the processes of making Software which can be automated. Here we go into disciplines like multi level code generation, code which generates code, and agent technologies, multi platform development, massive parallel systems, distributed systems etc.
Software Production Lines is the strategic and massive industrialisation of Software Production where now the entire deployment of projects in themselves become the pieces of the game. It means that
groups/clusters of projects are launched together as part of larger strategic moves within the production of the software. Thus,
systematic component generation - manual as well as automated - are key corner stones here, and thematic component clusters are some of the operationals in this game, with multi-level
enzymatic links and connectors to other thematic clusters. Thus, for instance as an example could be systems which enzymatically links to graphical
user-interface-clusters, thus enabling the business layers to connect to a variety/host of optional graphical unser interfaces.
Digital Age Institute is geared to take you
industrially from
scratch all the way up to complex, multi-level cluster-based industrialised sequenced thematic software production. We thrive in the tension field between the ever increasing needs for more and more
simple solutions to continuously more complex problems. This gap widens, and top advanced Software Production is the self-suppliant filler in this gap.
David Svarrer, CEO
DAI ProjectsPosted by David Svarrer 28 Dec, 2008 18:17For Software DevelopersIn a recent conference, in KICC, (Ministry of Science & Technology, Kenya, April 2008) I presented the concept of the
Continuous Systems.
I didn't think it would have any particular impact, but I have now been told that since I have opened this blog, I should spend a little time on this topic.
Continuous SystemsImagine a computer with a software which does not have a save-button, and does not have a load button. It does not have any particular backup-function, and no particular restore function.
A question could then be - Then how would you load the data from the system ? The answer is, that I wouldn't. They are already loaded. Then how would I save data from the system ? The answer is, that I wouldn't. They are already saved.
The puzzled reader will continue asking similar questions, and the answer to all of this is, that such systems can be constructed, but that the way we right now deal with save, load, changes, updates, deleting, inserting and such operations would have to change to a new gear.
Does Continuous Systems exist ?Yes - in our institute we are already developing standard software with such facilities, for normal, administrative use. It means, that when the user starts this software, it will automatically load its data from the database without any user interference, no OK-buttons, no POP-up's with Retrieve-OK-Cancel etc.
Whenever the user makes a change, or an insertion or a deletion, the software will record it as a version-change, and it will be possible for ever (!) to undo the change/insert/delete. It also means, that saving will be unnecessary, because if a change is not wanted, it will be possible to go to any particular previous point in history of the existence of the data handled by the software, and continue from that point. That would again become a new point in history, thus, not a folding back in time.
Continuous Systems vs. Normal SystemsBenefits of the Continuous systems are that the user interface becomes so much more simplified. Imagine that you can reduce the enormous load from software doing all sorts of security checks and balances, where supervisors shall continuously participate in approvals/checks/controls, instead of just tracking and tracing what is happening with the option of undoing the transactions.
Normal systems leaves a lot of (burden of...) control to the user - It is served nicely as "freedom", but fact is that it is unnecessary burdening for the user to keep track of file-names, disk-labels, locations, etc., but that also enables lots and lots of
errors from human interaction.
Imagine a system where the only security present is protection against leak of confidential information, but where access control, provision of integrity and availability is handled by the backbone of the system. It means that computer security would consist of access control and confidentiality while the integrity and availability would be handled entirely in the background. If there is no save/load button of any kind, then data would be handled at the necessary integrity level when the software does that. Availability would not anymore have to do with, if someone have tampered with a file, but would entirely depend on only the system availability. If any modificiation can be reversed, by choice of time/date or person or software module, source/destination for the transaction or combinations hereof, and if any such reversal is no deletion but just entering yet a new version level with the value of the data being the value of a previous version - then you have a continuous system.
Programming such systemsIt would not even be very difficult to program such systems. Imagine that you at any database table where you would like such functionality to be present, added a few fields to the key, such as:
Replacing - a reference to the old record being replaced.
Replacedby - a reference in the old record of its obsoleteness.
Transactionnumber - a globally unique transaction number. Uniqueness amongst similar systems. Central base not necessary if systems are granted unique ID's.
ReplacingOfficer - a reference to whom did the replacement.
Timestamp - of course a GMT/UTC time stamp of when the replacement took place.
Geostamp - a physical location of the officer doing replacement.
Reason - a field containing an entry from the officer if relevant as to why the replacement took place.
(add ad libitum) You can add other administrative fields to your hearts content.
Operating such systemsNow, it wouldn't be hard to implement. Each table would have a set of the above columns, and when ever a change is happening, the changed records are invalidated by setting the field "Replacedby" to a value of a new record. All other keys are maintained.
If such systems are implemented more system-wide, then it would even be possible to write
database-front-ends which would encapsulate all queries and updates to the database in relevant software which would handle these requests. It would be
transparent to your normal programming to operate on a continuous mode.
Draw backsIt is obvious that such systems are much more
complex to program than normal systems. The other side of the balance is that these systems reduces the complexity of their use tremendously, actually with such factors that there is no reason what so ever for not analysing if a system being produced can be made under this new paradigm.
Next stepThe above ought being enough for skilled programmers to figure out, evaluate the value of, and invent the necessary mechanisms.
Kind regards
Digital Age Institute Ltd.David Svarrer, CEO
PS: Came to think of - if you don't want to re-invent a wheel, you can contact me, then we could make a research and development workshop in
Continuous Systems, for you / your colleagues, with the outcome for you that you will know the technologies behind from practical application. The workshop will be in Java Language with Eclipse IDE.
Information TechnologyPosted by David Svarrer 21 Dec, 2008 16:47Hardware or Software ?It has occurred to me, that it is amazing that the war is still on to get a slice of the Fibre Optics, "The Cable", "The Connection", "The Internet" - as if it is not already here.
Furthermore, thousands of whiners
complain bitterly about the
cost of
internet connectivity, yet, if the products these companies wanted to push to the market was actually worth their salt, the permanent cost of the infrastructure/connectivity would not be any sort of hindrance.
Everybody seem to want a big chunk of the
assumed cake, even though all studies both locally and internationally has shown that the profits is
not in the hardware, the
infrastructure - but in the content - the
software.
Do you remember only few years ago, when the enormous
Fibre Optic ring in
Germany went
bankrupt ? Was it EU
80 billion (not million - billion) ? And why ? Because it was the most lucrative business yet seen ? No. Because infrastructure is a cost on any government budget, not a profit centre.
Therefore - the war ongoing many places to get slices of an
infrastructure which is most likely only a cost - and in best case - a small income earner, is apparently fought by someone who don't think about that those who are going to pay for this infrastructure, are also making business from the content/products they push on those internet-structures - and
that business, ladies and gentlemen - is the business worth looking in to.
Therefore - Why is the fight not ongoing for the provision of content?
Why is it screamingly silent when the talk goes to the enormous potential there is, just ahead of you, to take up content-related services.
Why Software / Content ?Maybe one answer could be, that
hardware is so easy to come across, and to measure, while creating a
(software) content which has value in a modern world of Information and Communication Technology will really really make you on your feet, and to be ahead of the crowd, you will even be on your toes.
Maybe another answer is, that those who have the money right now in the region, have very difficult in seeing the potential in investing in knowledge, people, as that investment has legs to walk on - yet - that is exactly the investment which pays off the most - both for those walking knowledge banks and also for the investor.
Knowledge based EconomyIn Europe, some of the
think-tanks came to the conclusion in 1980's, that a
knowledge based economy would be one of the corner stones in the future economy, simply because of the movability of the same economy.
Knowledge moves by the click of a button, while
Hardware always will need transportation to be moved.
There is no tax, no levy, no fee on
knowledge - while most of all hardware which has a value, is taxed, levied, blocked at borders - either to EU, or from EU, causing delay and frustration.
Kindly
Digital Age Institute Ltd.David Svarrer, CEO
Studying with DAIPosted by David Svarrer 19 Dec, 2008 00:16How is it to train with Digital Age Institute ltd. ?Digital Age Institute Ltd. is the top most institute of Technical Training in Africa, which is specialised entirely in educations in Professional Software Development.
The education is tough. Not because of that it is necessary to be tough - but because of that the topic of Software Development is continuously mindboggling the professionals in this business - it is for sure one of the hard nuts to crack, to make software.
Amongst Career Guides, being a Software Developer in 2008 is as tough as being an advocate or a doctor - or even more. The earnings as Professional Software Developer can easily go way beyond the earnings of even good doctors or lawyers.
What does it entail to study Software Development?First and foremost you must love it. That is why you can sit, free of charge, in our ongoing classes, and evaluate if this is something for you. You do so, before you decide if you want to sign up.
Love it or forget it...The simple guide line is like this: If you can't wait until you are back on the next day for evaluation, you are most likely having some Software Gene in you. If you are more than bored stiff, and you are actually falling asleep when topics are about algorithms, how to control a particular part of the hardware, how to make a printer print 77 A's - even in reverse - then most likely Software Development is not you.
Give it a chanceMost people are some way in between. The more you work with something, the more you tend to like it. If you don't give it a chance, most likely you will only find out that this was really the thing for you, by sheer coincidence. Instead of signing up for something blindfoldedly, we recommend to spend some days in our classes for evaluation purposes, all of it free of charge, and then if you can't wait to start, then go ahead.
Top Equipment and EnvironmentOur institute is providing machines, chairs, tables, and a good, light, fresh-air environment, on 16th floor above town level, and we provide engaged, qualified tutors and instructors, who will not just let you down because of ignorance or lack of competence. Our instructors are qualified, competent and hard working to ensure that you get a good outcome out of the education.
Spoon feedingStudying with DAI is not piece of cake. We don't spoon feed you - but on the other hand - we take your questions seriously. If you have done your home work and have worked seriously with the exercises, and if you make an effort with the CAT's, then you will be taken even very serious by our instructors. They are not stupid, and they definitely do not do your work for you. So, lazy students are not given many chances here, while students who are maybe not sprinters in math, maybe they are slow learners - but willing and hard and smart working - those are given the chances to become part of the top developers in the world.
Therefore - to study with DAI is a mixture of that we give you the best available education in the market within Software development - and that you make an effort which can be measured - and that you remember that the most clever person is not the one who think that he knows it all, but the one who knows what he does not know - and then ask questions and seek clarification.
Kind regards
Digital Age Institute Ltd.Information Dept.
EnvironmentPosted by David Svarrer 19 Dec, 2008 00:02Hand Shakes - a "delicious" way of politenessWhen did you last wash your hands after you had visited the loo ? Don't feel shy. This is a serious topic, especially for people in touch with equipment used by others.
Statistics show, that 90% of all men, and 75% of all women world wide do not wash their hands after they have visited the loo.
In some places it is worse than other places. Now, think about what are the consequences of this. Don't think about disgusting issues - we will address those, later. Think just of practical issues such as that the common Cold, which in average lays any person from craddle to grave in bed 4 days per year, and Influenza, which in average lays any person from craddle to grave in bed 6 days per yer - are contagious mostly by handshake and sneezing.
No wonder with all this politeness, that we spend so much time being sick.
Imagine a world without hand-shakes...Assuming that sneezing takes a bigger chunk of the sick-days compared to handshake - then imagine - 3 million Nairobeans, saving even just 4 days in bed every year - that is 12 million working days, or days with your children, where you are staying home, having a good time with them - because of that you have saved these sick days.
What would it take ?Drop this old-fashioned British colonial style politeness where you all the time hand out your hands left right and centre in British polite effort to appear. Get yourself a hat, no matter if you are a woman or a man, and just touch the tip of the hat with a finger or two to greet others.
"Sickness makes strong..."This old claim that what doesn't kill you makes you stronger - is gibberish. Any virus attack on your body will slowly but surely make it weaker. Any sick day you have will shorten your life similarly, and for no reason.
In our offices in Digital Age Institute Ltd., we don't shake hands unless absolutely necessary.
The nasty commentsNow to something completely nasty. Don't read further if you are not ready to read something quite awful and distasteful.
Imagine that you shake hands with someone, who has this habit of not washing their hands, and they have just:
- been removing a pimple or black head in their face, while in the toilet
- been shaking hands with some other of their friends with unknown behaviour
- been in the toilet ... but there was no toilet paper
- been using the urinal - but there was no water
- ...
- ... do I need to say more ?
What to avoidJust... Don't... shake... hands... Its actually very simple !
What to do as a Computer ProfessionalWash your hands every now and then, and if you find the keyboard or mouse nasty, do wipe it with a detergent for keyboards/mouse. In our institute, our computers are cleaned once weekly, in order to ensure that they are kept in an appropriately hygienic condition.
Especially remember to wash your hands after visiting the loo, and after having done personal hygienic processings.
If you find our computers being not clean, do report it to our reception who is in charge of the Technical cleaning.
Kindly and with respect,
Digital Age Institute Ltd.Cleaning Department
DAI ProjectsPosted by David Svarrer 14 Dec, 2008 00:19Dear Prospect participant.
Hereby we launch the project "Blue Pages", which is a business product which will enable buying and selling of second hand items on the internet. We have got all the necessary licenses ready for this, and will be able to launch this project in the beginning of 2009, if you are quick on the trigger.
We expect this to be a simple home page generated approach, and we expect that we can take the regional market, due to a unique approach to the entire thing. The principle is, that the user will tell to us the content of their advertisement, and pay for it, then it gets online. There is a lot more to it than this; this is the basic description.
You will sign a confidentiality agreement, a non disclosure agreement and a partner contract, and the split on this project will be 50% to you, and 50% to Digital Age Institute Ltd. and we will provide the management and project management, investments, machinery, development environment, while you will be dealing mainly with software development.
If you are interested, please mail to:
bluepages@digitalageinstitute.com or send SMS to 0725 744 725, and we will respond to you.
Terms and conditions apply, and we reserve the right to hand pick the participants of the team.
Kind regards
Digital Age Institute Ltd.David Svarrer, CEO