Bananas Development Blog: share your thoughts

Kopierst Du noch, oder entwickelst Du schon ?

Vagrant. Development environments made easy.
Vagrant uses Oracle’s VirtualBox to build configurable, lightweight, and portable virtual machines dynamically. The first couple of pages serve to introduce you to Vagrant and what it has to offer while the rest of the guide is a technical walkthrough for building a fully functional web development environment. The getting started guide concludes by explaining how to package the newly created vagrant environment so other developers can get up and running in just a couple commands.


(R)?ex
With (R)?ex you can manage all your boxes from a central point through the complete process of configuration management and software deployment.


Diese Software sollte das Entwickeln und die Handhabung von vielen Projekten vereinfachen und man kann sich auf die eigentliche Arbeit konzentrieren.

Joe Armstrong. Analyse der aktuellen Programmiersprachen-Welt

Joe Armstrong hat Erlang erfunden und hat eine lange Zeit der Programmiersprachen-Entwicklung miterlebt.

Hier ist mal eine aktuelle Einschätzung über die vielen Programmiersprachen die es heute so gibt.

Hier zum gleich lesen und als Backup:
Old timer here ...

When I learnt programming (1967) ,
I could choose between FORTRAN and (it was rumoured, Algol)
but nobody knew anything about Algol so it was FORTRAN.

The turn round time for a program was three weeks

week 1 - write code on paper forms - send to computer center to be
turned into punched cards
week 2 - review punched cards, if ok send to machine
week 3 - results

The compiler helpfully stopped at the first syntax error which got you back
to week 1 -
so if you had say ten errors in your program it would take 30 weeks to get
it running.

This is a pretty good environment - teaches you not to make mistakes and to
think first.

By about 1970 I was at university and turn round times were down to 4 hours
and you could punch your own cards - it was still FORTRAN

By 1974 I got access to a computer -- a honywell DDP516 - with a colossal
32 KB memory.
So the 474 pass FORTRAN compiler could compile a hundred line program in
less than a week
(or so ...)

Things improved - I went to CERN and used the CRAY1 this could compile 100K
lines of
FORTRAN in 1 picosecond (ie about a zillion times slower than my mobile
phone today)

Still Fortran.

In 1974 (ish) I got to play with a DEC10 - Now I could write FORTRAN,
Basic, assembler
and it had time-sharing (wow) turn round times of seconds. If I'd been In
the USA I'd be Bill Gates,
but this was Edinburgh.

In 1976 I got a job programming a NORD10 in FORTRAN/Assembler and it was
really fast
turn round times of seconds.

In 1980 ish I was still programming in FORTRAN - I forget the name of the
machine
all files were in one directory, no full-screen editor, no revision control
system,
I wrote about 150K lines of FORTRAN for it.

1985 I joined Ericsson - wow a VAX11/750 - new languages to learn. Bye bye
FORTRAN

I learnt (with various degrees of proficiency) Lisp, Prolog, awk, bash,
smalltalk, TCL,
and became proficient in Prolog (aggghhh - the beauty ....)

I also played with just about any language I could get my hands on (ML,
forth, ...)

Then I (1986) got into my Erlang Phase (I couldn't really learn Erlang,
'cos it didn't exist,
so I invented it) - it was really an outgrowth of Prolog+Smalltalk with a
bit of error recovery
concurrency and distribution throw in.

Then I learnt (badly) C - But Mike Williams said my C was crap and looked
like Fortran so he
binned my C ... (why use malloc and free and pointers anyway ...)

I saw C++ coming and read the book - or at least tried to read the book -
there's a dent
in the wall behind my piano, where the book hit the wall - Improvements to
C should make things
easier not more complicated, I thought.

Time passed.

I tried Java (not impressed, ok it's better than C++, but oh so verbose, I
used to get
programmers "white fingers" when programming FORTRAN you have to write
hundreds of lines
to do the smallest thing - Java seemed similar - so verbose) - I also
(later) tried
Python (ok), Ruby (ok), Lua(better), Javascript(I like :-)

It's actually taken me quite a long time to learn all these languages, and
they didn't
all come at once. I had a good 15 years of FORTRAN - long enough to get
good at it,
10 years of Prolog, 20 years of Erlang etc.

I also had a long time to assimilate the new ideas - the ideas in
programming come pretty slowly
- once every twenty years or so somebody has a really good idea,
programming
today hasn't improved much in the last 20 years - it was mess then and it's
still a mess.

IDE's and revision control systems have just made matters worse - now you
have all the
old versions of the mess as well as the mess itself, and the IDE means you
can't even see the mess.

The best IDE in the world is your BRAIN - it's a zillion times better than
these
clicky things.

What's this got to do with education?

Suppose you're starting off.

You can choose between twenty odd languages (all of them good for one
reason or another)
what took me 40 years to learn, you must try to understand in 2-3 years,
this is just not possible.

What languages should a beginner learn, what languages should a school
teach?

Now we get to the paradox of choice - because there are so many
alternatives it becomes
impossible to choose.

Old timers say "choose the language appropriate to the problem" when you
know 20 odd
languages (with varying degrees of proficiency) this is easy to say - but
If you know
two languages Java and C then this isn't much help.

There are literally problems where the solution in a CLP language is a few
lines
and is thousands of lines in C.

What would I recommend learning?

- C
- Prolog
- Erlang (I'm biased)
- Smalltalk
- Javascript
- Hakell / ML /OCaml
- LISP/Scheme/Clojure

A couple of years should be enough (PER LANGUAGE).

Notice there is no quick fix here - if you want a quick fix go buy "learn
PHP in ten minutes"
and spend the next twenty years googling for "how do I compute the length
of a string"

The crazy think is we still are extremely bad at fitting things together -
still the best
way of fitting things together is the unix pipe

find ... | grep | uniq | sort | ...

and the fundamental reason for this is that components should be separated
by well-defined protocols in a universal intermediate language.

Fitting things together by message passing is the way to go - this is basis
of
OO programming - but done badly in most programming languages.

If ALL applications in the world were interfaced by (say) sockets + lisp S
expressions
and had the semantics of the protocol written down in a formal notation -
then we could
reuse things (more) easily.

Today there is an unhealthy concentration on language and efficiency and
NOT on how things fit together and protocols - teach protocols and not
languages.

And teach ALGORITHMS.

Cheers

/Joe

(The dates in the above are approximate)

© Joe Armstrong 2013

Verlustfreie JPEG-Kompression

Endlich mal was Neues und Konkurrenz zu PNG:

Die Independent JPEG Group (IJG) am Leipziger Institut für Angewandte Informatik (InfAI) hat eine neue Version der Software-Bibliothek libjpeg veröffentlicht, die Fotos im JPEG-Format verlustfrei komprimieren können soll.

Bibliothek für verlustfreie JPEG-Kompression

Neuer offener Video-Codec in Sicht.

Es ist immer wahrscheinlicher, dass es endlich einen Codec geben wird, den alle Browser unterstützten und auch noch Patentfrei ist.

IETF standardizes the Opus audio codec as RFC 6716 - Opus reference implementation 1.0.1 released

Opus was developed and tested in a public, fully transparent process within the IETF, proof that open collaboration can produce a better audio codec than proprietary, secretive, patent-encumbered systems. Open standards benefit-- and benefit from-- open source organizations and traditional commercial software companies alike. Opus itself is the result of a collaboration including Broadcom, Google, the IETF, Microsoft (through Skype), Mozilla, Octasic and Xiph.Org.


via: neoterisch.de

So sollte eine Website aussehen

Sie hat style, ist im Trend und hat vor allem Inhalt.

An dieser Seite sollten sich viele ein Bespiel nehmen.


If PHP Were British

Darüber sollte man sich mal Gedanken machen. Programmiersprachen sollten Manieren haben.

If PHP Were British

Denn so etwas liest sich doch viel besser, oder ?
what_about (£variable) {
    perhaps £possibility:
        //Code here
        splendid;
    perhaps £other_possibility:
        //Code here
        splendid;
    on_the_off_chance:
        //Code here
        splendid;
}


via: reddit/r/php


$data und $row

Man kennt ja solche Variablen. Und trotzdem werden diese immer wieder verwendet....

The world’s two worst variable names
Bad variable naming is everywhere. Maybe you’ll find variables that are too short to be adequately descriptive. The programmer might as well have been working in TRS-80 BASIC, where only the first two characters of variable names were significant, and we had to keep a handwritten lookup chart of names in a spiral notebook next to the keyboard.


Also bitte sich so was schnell abgewöhnen !!
Und kommt mir bitte nicht mit Perl ( wie in diesem Artikel in den Kommentaren schon erwähnt.. ). Das sind alles Variablen von Perl selber und da hat man keinen Einfluss drauf...


Programmierfundgrube

Noch eine Fundgrube.
Diesmal mit vielen Anleitungen und PDFs von Graphics Programming bis VIM

Become a Programmer, Motherfucker
If you don't know how to code, then you can learn even if you think you can't.



git und individueller SSH Key (ssh -i)

Wenn man nicht nur einen privaten SSH-Key hat, dann kann man via -i diesen angeben:
-i identity_file

Selects a file from which the identity (private key) for RSA or DSA authentication is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2. Identity files may also be specified on a per-host basis in the configuration file. It is possible to have multiple -i options (and multiple identities specified in configuration files).


Nun finde ich diese Option nicht beim git Befehl.

Um dieses doch zu können verwendet man einen Eintrag in der ~/.ssh/config
Host gh
Hostname github.com
User git
IdentityFile ~/.ssh/privateKey


Somit kann man für einen speziellen Host den Benutzer und die Identity festlegen.

What was there

Das nenne ich mal eine schöne Umsetzung und Verbindung von Google Maps. Tolles Interface, dass auch funktioniert, und sehr gute Idee !

WhatWasThere
The WhatWasThere project was inspired by the realization that we could leverage technology and the connections it facilitates to provide a new human experience of time and space – a virtual time machine of sorts that allows users to navigate familiar streets as they appeared in the past.


git diff history auf eine Datei

Wenn man wissen möchte was den so alles mit einer Datei innerhalb eines git Repository so passiert ist, dann sollte man folgenden Befehl verwenden:

git diff -p /path/to/file


Somit hat man eine schöne Übersicht mit über alle Änderungen. Wenn einem die Liste zu lang ist, einfach noch ein "| more" hinten an hängen.

Textmate Shortcuts

Wer mit Textmate arbeitet, der sollte sich folgenden Artikel mal anschauen/durchlesen.
Even after six years, TextMate is still considered by many to be the best code editor available for Mac. The reason why is simple: it’s incredibly powerful, and offers features that even the newest editors don’t yet offer. Add a robust plugin/bundle community on top of it, and you get one heck of a code editor.

Essential TextMate Shortcuts, Tips and Techniques

Web Entwicklung für unterwegs

Auf Neudeutsch "Mobile development" ;-)

Jeder der sich mit diesem Thema befasst, sollte sich diesen Artikel zu Gemüte führen. Vielleicht kann der eine oder andere noch was lernen.

Mobile development with HTML5
Although the new web standard does not do your laundry, it has features that enable the creation of powerful applications—using only HTML, CSS and JavaScript (a Rails back-end can bring additional firepower to the table). This post will go over some key concepts and features of HTML5, setting the stage for more advanced subjects.

Clockwise/Spiral Rule

Diejenigen die C programmieren, sollten sich mal diese Seite hier anschauen. Ist zwar nicht mehr die aktuellste aber C ist das ja auch nicht mehr ;-)

The "Clockwise/Spiral Rule''
There is a technique known as the ``Clockwise/Spiral Rule'' which enables any C programmer to parse in their head any C declaration!