Shafe Shifter Just another guy on the internet.

1Apr/110

12 Tips To Help You Communicate With Your Developers

This could be Your Developer

This could be your developer!

I Don't usually blog just to reproduce another thing I already saw, hense the slowness in new post. But I keep going back to this one.. It could be because I haven't slept in two days or maybe I keep going back because it's perfect...

The article is here: http://blogs.sitepoint.com/12-tips-for-better-developer-communication/
I'll Feel bad for reprinting it all but here is the best of it:

As an internet business owner you’ll need to face your developers. Yes, it’s scary — they probably look odd and speak a weird language. But you can’t avoid it. Here are my 12 tips to help you communicate with your development team…

1. Know Your Requirements…
How can you explain your requirements if you don’t know what they are? Developers are often faced with vague, wishy-washy briefs such as “it needs to be just like Facebook, only — er — like, different”.

A good developer will immediately begin to analyze your idea. They’ll ask questions. They’ll pose “what-if” scenarios. No one will expect you to have all the answers, but you should be able to discuss the majority of problems. If you can’t, you haven’t thought the project through. It’ll fail.

2. …and Document Them
Putting your requirements on paper may not be fun, but it’s necessary. Interface sketches and flowcharts will help you identify functionality, understand the technicalities and explain issues.

Consider hiring a systems analyst if you can’t do this yourself. They’ll ask identical questions, though.

3. Don’t Use Pseudo Code
If you’re not a programmer, please, please don’t attempt to write pseudo code — it won’t help. You’ll almost certainly over-complicate the easy stuff and gloss over the complexities. Your developer will need to reverse engineer your ‘code’ to determine what you actually wanted to achieve.

Pseudo code is useful when developers discuss algorithms with each other. There are few other reasons to use it.

4. Agile Programming is Not an Excuse for Poor Planning
Don’t think that rapid, agile software development excuses requirements analysis. It may reduce some of the up-front planning, but you’ll still need to make just as many decisions — if not more.

5. Be Clear and Decisive
Programmers make thousands of decisions on your behalf. However, they will inevitably have questions during the development process and failing to providing a definitive answer will halt progress.

As good manager, you’ll take responsibility, make a prompt decision, stick with it, and face the consequences if it’s wrong. Bad managers are unavailable, avoid answering the question, seek opinions from 57 other (disinterested) colleagues, then blame the developer for delays or bad decisions.

6. Stay Ahead of Your Developers
Good programming teams will have a development plan — components and features will be implemented in order. Understand that plan and prepare accordingly:
know what decisions need to be made prior to implementation
prepare dummy data or test cases
organize the production of content, graphics, videos or other media.

7. Avoid Scope Changes
Changing scope can destroy a project and put a deadline at risk. You may have seen a cool feature elsewhere, but it doesn’t need to be implemented immediately.
By all means, have an informal discussion with your developer. State it’s something you’re considering for a later version — don’t distract them from the agreed tasks or demand immediate attention.

8. Don’t Assume Anything
One of the worst statements made by non-developers is: “Hey, we should implement feature X. It’s easy, right — it’ll only take a few hours.”
It might take a few minutes. It might take months. It might be impractical. It might be technically impossible. You don’t know — if you did, you wouldn’t require a developer to implement it for you.

9. Set Realistic Deadlines
Like anyone, developers work best when they have an agreed deadline. However, those deadlines should be set by the developer themselves or someone with programming abilities and in-depth technical knowledge of the system.  Setting an arbitrary or unrealistic deadline will result in a bug-ridden monstrosity which takes far longer to fix.

10. Alter Your Schedule When Necessary
Application development is complex. Development estimates are just that — estimates. Programmers will encounter unforeseen problems and changes to the project scope (no matter how hard you try to avoid them).

The schedule will inevitably change as the project progresses. Do not be afraid to modify the completion date accordingly.

11. Test Your Own Application
Don’t rely on your developers or other people to test your application. It’s your vision: test it yourself at every opportunity.

That said, be aware you may be running unfinished code and check progress against the development schedule. Don’t send emails ranting about feature Y not working when that code hasn’t been started.

12. Stay Involved and Keep Communicating
Most people lose interest in their own projects as time goes on. If you can’t remain enthusiastic, don’t expect it from others.

Contact your developers on a regular basis. You don’t necessarily need to organize formal progress meetings — just show your face and ask how things are going.

That said, avoid pestering them. Your project won’t be completed quicker if you call your developer every 10 minutes to ask “are we there yet?” Let your developer do their job.

Ok maybe that is all of it but it is awesome, and you should read all of Craig Buckler's other stuff...

::Awaiting DMCA takedown notices::

1Mar/110

The Commodore 64 is Back!

Thats right, the machine that made home computer history in 1982 is coming back. Commodore had quite a history starting back in 1954, but never really hit it big until the early 80s when they managed to bring affordable personal computers into peoples living rooms. Personally my very first computer was a Commodore Vic 20, released in 1980. It had a full 5kb of Ram (The machine I'm writing this on now has 5242880kb of Ram. This was my first computer sending me into the world I live in today.

A few years later in 1982 Commodore released the Commodore 64 featuring a full 64k of ram for under $600. The price alone led it to be one of the top selling personal computers of the decade.

Commodore remained top of their game for for a good 5 or 6 years until IBM Clones and Apple machines took over the consumer space. Finally in 1994, Commodore was forced to declare bankruptcy.

The Commodore brand changed hands a multitude of times after their liquidation and various reboots of the brand as well as the Amiga where attempted with varying levels of success. In April, 2010, Barry Altman founded Comodore USA, LLC.  Oddly, Barry's background isn't in Tech, but in furniture.  Which has to make me wonder if this reboot is going to be like many of the other Commodore reboots and fizzle before it gains any momentum.

The company's about us page says "We are Commodore and AMIGA fanatics, just like many of you. We ask ourselves what could have been, and we are appalled by Apple revisionism. Commodore is back, and we're determined to bring the much loved brand back to the mainstream and restore its prominence in the tech industry to that which it richly deserves. It ain't over 'till we say so." which sounds promising, but only time will tell.

The new Commodore 64 is a modern day PC in a modified C64 Shell, with a handful of modifications.  While it can run windows, the machine comes with the Commodore OS which is a custom blend of Ubuntu Linux.  Apparently you are offered a boot menu that allows you to boot into the original C64 Basic 2.0 operating system.   The machine comes with a lot of your standard PC components tucked away where you might have originally found the machine's I/O ports. The Commodore website claims the machine has 4gb RAM a far cry from the 64kb of the original as well as an Intel® Atom D525 1.80GHz processor. The full specs from the site read:

BACK PANEL CONNECTORS:
1 12V DC Jack
1 PS2 KB/Mouse connectors
1 HDMI
1 DVI-D
1 VGA
4 USB 2.0
1 RJ45 LAN (10/100/1000)
3 3.5mm Audio with S/PDIF out

MODEL: Commodore 64x
PROCESSOR: Intel® Atom D525 1.80GHz (Formerly Pineview-D)
CHIPSET: Intel NM10 (Formerly Tiger Point)
              Next-Generation NVIDIA ION Graphics (ION2)

MEMORY: 2 x DDR2 667/800 Single Channel DIMM slots (up to 4 GB)

GRAPHICS: Next-Generation NVIDIA ION Graphics Processor

AUDIO: Realtek ALC662 6-CH HD Audio
           Nvidia L-PCM digital audio (HDMI 1.3) can support 7.1 output with external decoder

LAN: Realtek RTL8111DL PCI-E Gigabit Ethernet

STORAGE: Intel NM10
              2 SATA2 3Gb/s ports
              JMicron® JMB362 SATA controller
              2 Internal SATA2 3.0Gb/s port with RAID 0, 1, JBOD.

FEATURES:
- ACPI S3 Compliant
- ECO-design for EuP Standard
- 12 VDC jack on back panel for external power supply
- Dedicated DDR3 512MB Graphics Memory Onboard
- Premium DirectX 10 graphics with advanced digital display connectivity
- PureVideo™ Full 1080p HD video and Blu-ray playback
- NVIDIA® CUDA™ technology to accelerate the most demanding applications
- Premium Windows experience with Windows Vista and Windows 7
ONBOARD I/O

CONNECTORS:
1 mini PCI Express x1 Slot
1 Serial header (RS232)
4 SATA2 3Gb/s Connectors with RAID 0, 1, JBOD functions (SATA#3,#4)
2 USB Pin Headers for up to 3 additional USB 2.0 Ports
1 8 bit GPIO header
1 CIR header
1 9-pin Audio Connector
1 Front Panel Connector
3 Fan Headers
1 4-pin Power Connector

 

See more pictures and read more about the new C64 at the Commodore website @ http://www.commodoreusa.net/CUSA_C64.aspx.

If your suddenly feeling nostalgic and would to go back down memory lane -- you may want to have a look at Vice, an emulator for most all commodore models.

 

Classic C64 1980s

The 2011 C64

28Feb/115

Compiling Darwin Streaming Server 6.0.3 Under Debian.

I was recently tasked with a Linux install of Darwin Streaming Server on a Debian server. Unfortunately for me Apple stopped making Windows and Linux builds of DSS when version 6.0 was released.

After a lot of failed attempts at compiling from source on Linux I came across a wonderful post that had a shell script that would install all dependencies, download the source plus a handful of patches, compile and install v6.0.3 on Ubuntu 10.x. A few tweaks and I was able to get it to work for my install of Debian.

For the life of me I can't find the page again where that script was located, and apparently I'm not the only one. A google search brings up a whole lot of dated material mostly for DSS 5.x.

You shouldn't run into problems with these, I've used them several times now and they work pretty well. Be sure to run them as root though.

Debian 5.0 & 6.0 DSS Compile Script:

#!/bin/bash
apt-get install build-essential wget
addgroup --system qtss
adduser --system --no-create-home --ingroup qtss qtss

wget http://static.macosforge.org/dss/downloads/DarwinStreamingSrvr6.0.3-Source.tar
tar -xvf DarwinStreamingSrvr6.0.3-Source.tar
mv DarwinStreamingSrvr6.0.3-Source DarwinStreamingSrvr6.0.3-Source.orig
wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/dss-6.0.3.patch
patch -p0 < dss-6.0.3.patch
mv DarwinStreamingSrvr6.0.3-Source.orig DarwinStreamingSrvr6.0.3-Source
wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/dss-hh-20080728-1.patch
patch -p0 < dss-hh-20080728-1.patch

#need to answer n then y
cd DarwinStreamingSrvr6.0.3-Source
mv Install Install.orig
wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/Install
chmod +x Install
./Buildit
./Install

Download debian-dss.sh

 

Ubuntu 10.x DSS Compile Script

#!/bin/bash
sudo apt-get install build-essential wget
sudo addgroup --system qtss
sudo adduser --system --no-create-home --ingroup qtss qtss

wget http://static.macosforge.org/dss/downloads/DarwinStreamingSrvr6.0.3-Source.tar
tar -xvf DarwinStreamingSrvr6.0.3-Source.tar
sudo mv DarwinStreamingSrvr6.0.3-Source DarwinStreamingSrvr6.0.3-Source.orig
wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/dss-6.0.3.patch
sudo patch -p0 < dss-6.0.3.patch
sudo mv DarwinStreamingSrvr6.0.3-Source.orig DarwinStreamingSrvr6.0.3-Source
wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/dss-hh-20080728-1.patch
sudo patch -p0 < dss-hh-20080728-1.patch

#need to answer n then y
cd DarwinStreamingSrvr6.0.3-Source
sudo mv Install Install.orig
wget http://dss.macosforge.org/trac/raw-attachment/ticket/6/Install
chmod +x Install
sudo ./Buildit
sudo ./Install

Download ubuntu-dss.sh

 


If you run into problems or are just plain lazy, here is Darwin Streaming Server 6.0.3 compiled for Linux. Simply unpack the archive and run ./Install :

 

Download: Darwin Streaming Server 6.0.3 Linux Binaries

26Jan/110

Quick Debian Server Provisioning Script

Here is a quick little bash script that I use to initially provision Debian LAMP servers from a fresh install. This should setup PHP with all the whistles and bells, a whole handful of utilities as well as install webmin for you.

Nothing to complicated here, just a quick little script to speed up your life.

clear
clear
echo 'Debian Provisioning Script'
echo '01-12-2011 TNL Total Solutions'
echo 'http://www.tnlsoft.com'
echo ''
read -p "Press any key to begin provisioning"
clear
echo 'Preparing server for provisioning...'
apt-get update
apt-get upgrade
apt-get dist-upgrade
echo ''
echo 'All existing packaged updated'
echo ''
read -p "Press any key to begin installing NEW packages"
clear
echo 'Installing Required Packagesn'
apt-get install apache2 apache2-utils apache2.2-common bind9 bind9-host bind9utils curl gawk denyhosts sendmail ftp proftpd gzip iptables lftp libapache2-mod-perl2	libapache2-mod-php5 libapache2-reload-perl libcurl3 libxml2 lynx mysql-client mysql-common mysql-server ntp ntpdate openssh-client openssh-server openssl perl perl-base perl-modules php-pear php5 php5-cli php5-common php5-curl php5-dev php5-gd php5-geoip php5-imagick php5-imap php5-ldap php5-mcrypt php5-mhash php5-mysql php5-odbc php5-xmlrpc proftpd python rdate samba samba-common sendmail sendmail-base sendmail-bin sendmail-cf sensible-mda subversion tar unzip wget makeself zip libghc6-openal-dev libsage2 libsdl-gfx1.2-4 mingw32 mingw32-binutils mingw32-runtime
echo ''
echo ''
echo 'Creating Skel'
mkdir /etc/skel/www
mkdir /etc/skel/logs
mkdir /etc/skel/www/cgi-bin

cd /var/www
rm index.html
wget http://www.tnlsoft.com/debian/index.txt
mv index.txt index.php
chmod 0777 index.php
cp index.php /etc/skel/www

echo ''
echo ''

echo 'Reconfiguring PHP 5'
cd /etc/php5/apache2
mv php.ini php.ini.old
wget http://www.tnlsoft.com/debian/php.ini

echo ''
echo ''
echo 'Installing PEAR Packages'
pear install Mail
pear install Net_SMTP

echo ''
echo ''
echo 'Enabling Apache Mods'
a2enmod dav_fs
a2enmod dav
a2enmod rewrite

echo ''
echo ''
echo 'Restarting Apache'
/etc/init.d/apache2 restart

echo ''
echo ''
echo 'Installing Webminn'
cd /root
wget http://downloads.sourceforge.net/project/webadmin/webmin/1.530/webmin-1.530.tar.gz
tar -xvf webmin-1.530.tar.gz
cd webmin-1.530
./setup.sh
echo 'Done!'

Grab it here: http://dev.tnlsoft.com/download/debian_provision.zip

1Jul/100

Google Hardware in 1998

I remember in 1997 when someone first pointed me to http://google.stanford.edu a student project that was supposed to beat out WebCrawler as a search engine. I wasn't too impressed at the time... It's interesting to think how huge Google has become and how I don't really use anything else to search the web. Let alone the dozens of other services I use Google for regularly.    At the time the Google.standford.edu homepage looked something like , complete with the default to only show 10 results.

What is even more impressive is the hardware that ran google back then:

  • 2 300 MHz Dual Pentium II Servers with 512MB of RAM. There are 9 9G drives between the two machines. The main search engine ran on these.
  • An IBM RS6000 with 4 processors and 512MB of memory. It had 8 9G drives internal.
  • A Machine with  3 9G drives, and there are 6 4G drives attached to a Sun Ultra II.
  • An IBM disk expansion box had another 8 9G drives.
  • A Sun Ultra II with dual 200MHz processors, and 256MB of RAM.
  • A homemade disk box which contains 10 9G SCSI drives.

All of Google in 1998 as a whole:

Stop SOPA