17 Software Engineering Rules based on the UNIX Philosophy

21 days ago

  1. Rule of Modularity: Write simple parts connected by clean interfaces.
  2. Rule of Clarity: Clarity is better than cleverness.
  3. Rule of Composition: Design programs to be connected to other programs.
  4. Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
  5. Rule of Simplicity: Design for simplicity; add complexity only where you must.
  6. Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
  7. Rule of Transparency: Design for visibility to make inspection and debugging easier.
  8. Rule of Robustness: Robustness is the child of transparency and simplicity.
  9. Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
  10. Rule of Least Surprise: In interface design, always do the least surprising thing.
  11. Rule of Silence: When a program has nothing surprising to say, it should say nothing.
  12. Rule of Repair: When you must fail, fail noisily and as soon as possible.
  13. Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
  14. Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
  15. Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
  16. Rule of Diversity: Distrust all claims for “one true way”.
  17. Rule of Extensibility: Design for the future, because it will be here sooner than you think.

From ‘Basics of the Unix Philosophy’: http://www.faqs.org/docs/artu/ch01s06.html

Martin Gross

,

---

git with github through a firewall

44 days ago

Git supports a new, much more efficient HTTP based transport as of version 1.6.6.

With the git’s new Smart HTTP support it is possible to access github even without ssh access. SSH access is typically not possible from behind a corporate firewall. Though, most environments allow http through a (authenticating) proxy. With http support it is possible under these circumstances to access github, you can now push over that protocol and clone private repositories as well.

To clone one of your repositories having push access as well, you can clone this way:

git clone https://username@github.com/username/project.git

Be sure to use SSL (https) as git asks for your github password and sends your password unencrypted over the wire.

For a public repository you can use:
git clone http://github.com/username/project.git

You need Git client version 1.6.6 or greater. For windows you can download it here:
http://code.google.com/p/msysgit/downloads/list

After the install be sure to set the path environment variable to the directory C:\Program Files\Git\cmd\ or whereever git is installed on your computer.

Set both (https and http) proxy environment variables:

HTTPS_PROXY=http://user:password@proxy.firma.de:port
HTTP_PROXY=http://user:password@proxy.firma.de:port

I got the following error message:

error: error setting certificate verify locations:
  CAfile: /bin/curl-ca-bundle.crt
  CApath: none
 while accessing https://mgross@github.com/mgross/gmailr.git/info/refs

Which was solved by setting git config:

git config --global http.sslverify false

To push your changes to github use the following command:
git push origin master

More about ‘Working with Remotes’ can be found at Pro Git

Martin Gross

,

---

State of Flow

67 days ago

“What makes a life worth living?” Noting that money cannot make us happy, he looks to those who find pleasure and lasting satisfaction in activities that bring about a state of “flow.”

Martin Gross

,

---

Some successful european SaaS startups

67 days ago

Might serve as inspiration for bootstrapping in continental Europe:

letsannotate.com
letsfreckle.com
mite.yo.lk
mindmeister.com

Martin Gross

,

---

Merging PDF files using free opensource software

72 days ago

Using PDFCreator you can merge any number of different file types, including (parts of) PDF files, into one PDF.

PDFCreator is a Windows tool that can be used like a printer.

“When printing anything to PDFCreator … On the bottom of that window you’ll find several buttons: Cancel, Waiting, Options, eMail and Save. Most of these buttons don’t need further explanation, but the power of one of them may easily be overseen: the marvellous Waiting-button.”

“Clicking the Waiting-button opens the main window of PDFCreator. … PDFCreator will wait for you to add another ‘print’ job, for you to change the order of the existing jobs, or for you – here comes the magic word – to combine existing jobs. As soon as you’re ready adding, changing order and combining jobs, click one to select it for ‘printing’ and choose Print from the Document menu or press Ctrl+P. The old familiar window will reappear, and clicking Save will then bring up a window asking for a name and location to save your new PDF file.”

Found at http://arjenvankol.com/freeware-pdf.php

Martin Gross

,

---

Maven Build without running JUnit tests

74 days ago

If you don’t want to execute the tests:

mvn clean install -DskipTests

If you want to skip compiling of the tests too:

mvn clean install -Dmaven.test.skip=true

Martin Gross

,

---

Motivation, incentives, money

78 days ago

The surprising truth about what motivates us:

Martin Gross

,

---

How to easily sync multiple Google calendars with your iPad

85 days ago

Add account
1. Tap the Settings on your iPad’s home screen.
2. Tap Mail, Contacts, Calendars.
3. Tap Add Account….
4. Select Microsoft Exchange.

Enter Your Account Info
5. In the Email field, enter your full Google Account email address.
If you use an @googlemail.com address, you may see an “Unable to verify certificate” warning.
6. Leave the Domain field blank.
7. Enter your full Google Account email address as the Username and your Google Account password.
8. Tap Next at the top of the screen. Choose Cancel if the Unable to Verify Certificate dialog appears.
9. Enter m.google.com in the new Server field.
10. Tap Next at the top of the screen again.
11. Choose the Google Calendar services to sync.
To delete all the existing Calendars on your iPad, uncheck the “Keep on my iPhone” option.
12. Synchronization will begin automatically if you have Push enabled on your device. Wait seconds to start a sync for the default calendar.

Enable Google multiple calendars
13. Goto http://www.google.com/calendar/iphoneselect. Login if required.
14. A web page opens with checkboxes for each of your calendars.
15. Select your calendars for sync’ing. DONE!

Thanks to http://apple-ipad-tablet-help.blogspot.com/2010/03/how-to-sync-google-calendar-with-ipad.html for describing the first steps.

Martin Gross

,

---

UMTS Internetfreigabe via Mac OS X 10.6 für WIFI iPad

87 days ago

N.B. If someone is interested in an english version, leave a comment below.

Bei Mehranschaffungskosten von 100 € nur für die UMTS / 3G Nutzung bei einem iPad kann man sich schon mal überlegen, ob sich das lohnt. Hinzu kommen die Kosten für die mini SIM-Datenkarte plus Datentarif (z.B. 30 € pro Monat bei Vodafone). Macht also zusammen 460 € Zusatzkosten im ersten Anschaffungsjahr gegenüber einem WIFI (WLAN only) iPad. Wenn man vorhat, das iPad vornehmlich zuhause zu nutzen und dort WLAN hat, sieht das Kosten-Nutzen-Verhältnis daher nicht besonders gut aus.

Wenn man schon eine UMTS Karte oder Stick für das Laptop hat, wäre es natürlich schön, wenn man diesen Internetzugang mitnutzen kann, z.B. wenn man unterwegs ist oder DSL mal ausgefallen ist. Internet-Sharing in OSX macht’s möglich.

Komplizierter als gedacht, aber nach einigen Anläufen (und einer kurzen Nacht) hat es dann auch endlich geklappt. Ich konnte die UMTS Internetverbindung (3G) mittels Internetsharing von einem MacBook Pro auch mit dem iPad nutzen.

So geht’s:

1. Man stellt unter OSX wie gewohnt die UMTS Internetverbindung per UMTS Karte oder Stick her. Zum Beispiel über die Vodafone Mobile Broadband Applikation.

2. Die Internetfreigabe anstellen: Dazu geht man in die Systemeinstellungen des Macs unter Freigaben. Dort wählt man die UMTS Karte unter “Verbindung freigeben:” aus. Da wir WLAN nutzen wollen, setzt man weiter unten das Häkchen bei Airport. In den Airport Optionen kann man noch den Schlüssel für WEP setzen und dem Netzwerk einen Namen (z.B. INet) geben.

3. iPad konfigurieren: In den Systemeinstellungen WIFI wählen, Netzwerk mit dem oben gewählten Namen auswählen und gesetzten Schlüssel eingeben.

Soweit noch alles Standard und wie erwartet. Und ich hoffte, dass das jetzt schon alles war. Aber von wegen. Keine Verbindung zum Internet mit dem iPad. Das iPad sieht zwar das Netz und versucht sich zu verbinden, aber es kommt keine Internetverbindung zustande. Wahrscheinlich ein DHCP Problem, daher mein Ansatz die IP Adressen manuell zu setzen.

4. Infos zu der Internverbindung sammeln: Terminal öffnen und ifconfig eingeben. Dabei sollte man man nach Einträgen in der folgenden Form suchen:

inet xxx.xxx.xxx.xxx netmask … 

Ich finde dazu beispielsweise:

ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
	inet 10.225.90.69 --> 10.64.64.64 netmask 0xff000000 

Die zweite IP Adresse nach dem Pfeil ist die relevante, also in meinem Fall 10.64.64.64 (auf einem anderen Rechner wahrscheinlich eine andere). Diese Adresse notieren und jetzt noch dig im Terminal eingeben.

;; Query time: 106 msec
;; SERVER: 139.7.30.125#53(139.7.30.125)
;; WHEN: Tue Jun  8 13:15:39 2010
;; MSG SIZE  rcvd: 452

Die IP Adresse die hinter SERVER steht, ist die IP Adresse des DNS Servers, die wir auf dem iPad benötigen.

Jetzt haben wir alle Informationen zusammen.

5. Airport auf dem Mac konfigurieren: Systemeinstellungen, Netzwerk, Airport wählen.

Dort ‘weitere Optionen’ und TCP/IP anwählen. IPv4 konfigurieren auf manuell setzen. Die oben notierte IP Adresse unter IPv4-Adresse eingeben. Teilnetzmaske auf 255.0.0.0 setzen.

Airport aktivieren, falls noch nicht der Fall.

6. iPad konfigurieren: Einstellungen, WIFI anwählen. Netzwerknamen (z.B. in meinem Fall INet) anwählen und unterhalbe der Überschrift IP Adresse den Button ‘statisch’ auswählen. Jetzt gibt man als IP Adresse des iPad eine freie IP Adresse an. Es bietet sich hier an die IP Adresse des Mac einfach um 1 zu erhöhen und für das iPad einzutragen, also hier 10.64.64.65 . Als Teilnetzmaske trage ich 255.255.255.0 ein. Der Router ist 10.64.64.64, also die IP Adresse vom Airport. Als DNS trägt man die oben durch dig gefundene Adresse ein, also hier 139.7.30.125 .

Zurück zur WIFI Übersicht und damit ist man auch endlich fertig: Die Internetverbindung klappt!

Martin Gross

,

---

FireBug Net Panel Explained

121 days ago

Jan Odvarko wrote a detailed explanation of the FireBug Net panel and another one explaining the timing data in particular.

Really useful and something I couldn’t find anywhere else including the FireBug website .

Martin Gross

,

---

« Older

blog comments powered by Disqus