= Welcome to [wiki:/Motto KARMA ENGINEERING] Research & Development Lab = We are R&D start-up in Kathmandu, Nepal. We are focused on [wiki:/AI AI] and [wiki:/IdeasAndConcepts software engineering], [wiki:/Zoom system programming] and [wiki:/Tools open-source technologies]. We have [wiki:/HowTo completed] [wiki:/Prerequisites the most advanced on-line courses] from MIT, Stanford and Berkeley. Now we are [wiki:/Services offering our abilities] to solve problems with [wiki:/Motto expert simplicity]. We have no interest in Javascript coding or ''using'' Rails (but we admire the way it was created). We are ''not'' HTML/JS/PHP/Java/Rails coders. [wiki:/Manifesto We are engineers and researchers]. The only way to write a good software is to [wiki://Example think about it]. Programming is a process of writing ''poetry''. Why? Because we are [wiki:/LispNotation talented], [wiki:/Prerequisites self-educated], [wiki://ADTs capable] and young. ----- The wiki section of this site is about sharing and teaching few selected ideas and concepts we believe are crucial for a software engineer. (It became a little messy, so, please, use [wiki:/TitleIndex] for quicker navigation). It is mostly the attitude, the way of looking at, and thinking about problems and tasks, the habit of understanding ''how it works'' and ''why it is so'' and, especially, ''why we believe something is good-enough'' or ''appropriate'', ''why we prefer this over that''. Such [wiki:/BackToTheBasics habits of thinking] are essential to deal with complex and quickly changing technology, as opposed to habitual snap-judgments of a typical consumer, who conditioned to skip the analysis completely. With such attitude it is obvious, that some recent development, such as attempts not to [wiki:/Zoom think about underlying hardware, data-structures or an OS], to throw it away, to make it someone else's problem (developers of JVM took care of everything!) brought the whole industry to this miserable state we're witnessing today. [wiki:/Programming Programming] has nothing to do with collecting classes (look, in C++11 they added this and that! Our Java framework has this and that - everything you need!) it is an [wiki:/Example actual experience] of describing given aspects of reality precisely in terms of programming language. (which means, that we need it as much as possible less constrained and less restricted, not more.) Yes, for ''coders'' [wiki:/Tools tools] are everything. Let them collect classes and compare frameworks. (Oh, this branded set of paints will make my paintings 17% more vivid and 31% more contrast and will improve my decision making). These pages are for people, who for some reason looking for an abstract [wiki:/Programming Art of Programming] which is about artistic sense, complete involvement, getting into a flow (not TAOCP), for people with so-called introvert mindset, for geeks and spooky minds, interesting in ''how things works'' and ''why it is so''. We be will happy to share ideas and work together with such people. ----- The difference between a coder and programmer is the same as it is between a writer and translator. Translator may be able to translate a novel like ''Catcher In The Rye'' into a language he knows to some extent, but he is obviously incapable to ''invent'' and write a comparable novel. Knowing a language does not make one a writer. Coders are translating specifications into a code, programmers are ''inventing'' specifications and expressing them in the form of code. Programming is an engineering discipline. Coding is a translation skill. It is impossible, by the way, to translate any sophisticated technical text without having a background knowledge of an environment, without knowing the context. That is why a software written by coders solves only one problem - getting their salary, but never the problem of people who will use the software. All those meaningless piles and piles of Java classes were created this way. On the other hand, it is not words that conveys an idea. It is idea itself. Words are just a media. So we need as '''less''' of them as possible, not more, like the Java crowd is so sure. Knowing a language is not enough to write a good poetry. And of course, it is not a typewriter (or an IDE) that makes one a poet. ----- A language is a medium for expressing ideas. {{{ (define (solve problem) (define (focus-on part) (if (good-enough? (details part)) part (focus-on (simplify part)))) (map focus-on (decompose problem))) }}} ----- There is our so-to-speak tutorial, aimed to show rather how to think and then program. [wiki:/Tutorial], [wiki:/Tutorial0], [wiki:/Tutorial1] ... [wiki:/Tutorial9], [wiki:/Tutorial10]. There are 11 sections altogether as messy as I wrote them.) ----- We are [wiki:/Donate accepting donations] from those who found our efforts beneficial. We're using accumulated funds to support our members (to pay for their living and travel expenses).[[BR]] [[Image(htdocs:qr.png)]][[BR]] bitcoin:{{{1GDZ6sGDBEJk7kytNMfVDwsYRajPz9GgiL}}} ----- There is a list of available [wiki:/Services services we provide] as partners or sub-contractors. ----- Information for [wiki:/iParticipate applicants], [wiki:/iInvest investors] and [wiki:/iPartner partners] and [wiki:/FAQ FAQ].