| DistroWatch Weekly
|DistroWatch Weekly, Issue 317, 24 August 2009
Welcome to this year's 34th issue of DistroWatch Weekly! Despite the ever increasing power of modern computer hardware, lightweight distributions designed for older or underpowered systems continue to flourish. One of them, Puppy Linux, has become a rather popular choice in recent years, mainly due to its optimised performance and careful choice of integrated applications. This week's issue of DistroWatch weekly takes a look at the latest release of Puppy Linux, version 4.2.1. In the news section, the openSUSE project has decided to return to its roots and make KDE the default desktop on its installation media once again, Novell continues to promote SUSE Studio as the best tool for creating custom Linux-based appliances, Mandriva integrates Plymouth into its boot process and removes all traces of KDE 3 from its distribution, and Sabayon Linux launches the first development build of its upcoming 5.0 release in the form of an internal test. Finally, take a critical look at the updated layout of our distribution pages - as always, any feedback and suggestions are most welcome! Happy reading!
Join us at irc.freenode.net #distrowatch
First look at Puppy Linux 4.2.1 (by Jesse Smith)
Puppy Linux created a splash a while back when it first came bounding onto the Linux scene. It's a small distro which tries to be both small and easy to use and, to date, it's been successful at both those goals. This week I took Puppy for a spin to see if this dog has learned any new tricks. The current release of Puppy, which came out in May 2009, is 4.2.1. It's still small, weighing in at a light 100 MB download. This barely gives one time to read through the highlights of the web site before the install image is downloaded and checked for errors. The site is well laid out and easy to navigate. The developers have taken the time to carefully explain what Puppy is and how to use the system. The project's Wiki comes across as friendly, informal and informative.
With the latest version of Puppy downloaded, I decided to give it a test drive on my desktop machine. This isn't an old machine; it's a generic box running along at 2.5 GHz, but it's a bit short on memory for a modern desktop, with just 2 GB of RAM. Puppy booted off the CD and started a wizard to detect my hardware. Puppy didn't do a very good job at guessing what my hardware was (both the recommendations for video and mouse were incorrect), but the hardware wizard explains what's going on and lets the user over-ride the defaults. With that out of the way, I was given an unusual desktop.
I say unusual, by Linux standards, because the desktop is half-full of icons. I'm used to near-empty screens with dull backgrounds. Puppy puts icons for most common applications and tasks right on the desktop with a bright background. This seems in keeping with their newbie-friendly approach -- no hunting through menus required. Puppy didn't set up my network connection automatically, but there is a big "Connect" button on the desktop, which runs a wizard that walks the user through connecting to the net. This process, like just about everything else I found in the Puppy distribution, is done in a friendly step-by-step manner. Also on the desktop are programs for drawing, web browsing, chatting and configuring the system. Most importantly there is a "Help" button with an introduction to the Puppy way of doing things, which seems to be aimed at Windows users.
There are two places I've found where the newbie-friendly image seems to fall apart. One of those is the application menu, which is full of cryptic program names. There are brief descriptions after each name, but I think newcomers would find application names like "XF-Prot" and "GTKLPQ" a bit confusing. The other place is in the Puppy installer. There are still the helpful information boxes, but there were a few problems. There isn't any disk partitioning or package selection during the install, which caught me a bit by surprise. Puppy just tries to install into whatever partition you select without any formating or questions. Playing with this for a while I found the installer would suggest the user run GParted to fix partitions if things seemed "not sane". After that, the installer walks through setting up GRUB, which also comes with all kinds of useful documentation. I managed to get through everything without any problems (or so I thought), but this install struck me as being different from anything I've seen before. This is probably because the installer supports putting Puppy on so many different locations such as USB sticks, CDs or internal drives; it's designed for flexibility of position more so than content.
Puppy Linux 4.2.1 - menu and system installer
(full image size: 147kB, screen resolution 798x597 pixels)
After the install was finished, I rebooted and Puppy's kernel panicked. Thinking there must have been a conflict between the last system I'd installed on the drive and the new Puppy installation, I went back and started from scratch. This time I used GParted to re-format the partition before running the installer. Once again everything appeared to go smoothly during the install and I was able to boot into Puppy Linux. One of Puppy's weak points seems to be hardware. Sound was properly set up and worked without any problems. However, aside from my video card and mouse, my mobile modem also wasn't detected. This isn't a problem on my desktop machine, but it means I won't be using Puppy on my laptop.
A concern I had while running Puppy is that, by default, the user runs as root. There's no warning regarding this. During the install and first boot there's no option to change the root password nor create another user account. This strikes me as a poor practice. Furthermore, there's no option to manage user accounts in the Setup or Control Panel applications. As far as I can tell, there is no graphical tool for changing or setting the root password either. The system just automatically logs in to the desktop as root. This is, in my eyes, a serious lapse in security. I realize Puppy tries to make things easy on new users, but having a password on a modern operating system should be standard practice. I set up a new password for myself and then went on to other things.
One of Puppy's really strong points is its ability to pack so much functionality into a little space. The download for Puppy is a mere 100 MB and, once installed, this grows to just 300 MB of hard disk space. This is tiny considering the amount of software that's included with the system. The user has modern web browsing (via SeaMonkey), word processing, spreadsheets, PDF handling, instant messaging and a variety of server and admin software. And it all looks modern. I'm not referring simply to the version numbers, but the overall look and feel of the system. For the most part, the applications look polished and work in a way the user would expect. The look isn't cutting edge, but comfortable. As I mentioned before, there's a pile of documentation which is actually helpful and explains concepts in a language non-experts can understand.
Puppy Linux 4.2.1 - custom system administration tools
(full image size: 73kB, screen resolution 800x599 pixels)
The system is also fast. Boot time on my machine was under twenty seconds. Applications and folders opened very quickly. The system is snappy and light. This was true when running from the CD as well as from the hard drive and shows Puppy's ability to run on older systems. To test this, I created a small virtual machine and ran Puppy with 256 MB of RAM from its CD. The operating system continued to perform very well.
Another problem I ran into after installing Puppy to my hard drive was that I couldn't browse the web. I could connect and ping IP addresses, but found that browsing to any URL gave me an error. It turned out that Puppy wasn't resolving any addresses via DNS. I tried to open my resolv.conf file and was given an error. Puppy, apparently, makes /etc/resolv.conf a short-cut (symbolic link) to /etc/ppp/resolv.conf, which loops back around to link to /etc/resolv.conf. I deleted the links and created my own resolv.conf file with some known name servers and web browsing became possible again. This wasn't a problem on the live CD, just on my hard drive install. Not being able to browse the web strikes me as a pretty big bug for a distro which tries to be newbie-friendly.
Along with getting web browsing back came the potential to add software packages, called PETs. These packages can be installed with the Puppy package manager and work much the same way (from an end user's perspective) as a Debian package or RPM file. The PETs downloaded and installed without any problem. There aren't very many in the official repository, but more are available from third parties. My only complaint was that the package manager didn't show how big a package was. It could be a few kilobytes or a few hundred megabytes, it'll look the same until the download starts. Other than that detail, the package manager is well laid-out and worked as expected.
Puppy Linux 4.2.1 - the package manager
(full image size: 75kB, screen resolution 795x568 pixels)
As far as I can tell, there is no package updater built into Puppy. During my time using it, I neither found a manual update application nor was I notified of any available updates. I gather that the developers see Puppy more as a live CD tool than a distribution to be installed on the local hard disk. A stripped-down version of the RPM package manager is installed on Puppy by default. This probably isn't very useful, since installing RPM packages and manually wading through their dependencies is likely to drive anyone mad in short order. But the tool is there for the brave at heart. Another thing I found odd is the manual pages. While Puppy comes with a fine collection of documentation, the man pages (common on most Linux systems) aren't included. Instead, running the man command re-directs the user to a web page which displays an error. This was unexpected, unwelcome and unhelpful.
Puppy Linux 4.2.1 - missing man pages
(full image size: 51kB, screen resolution 764x597 pixels)
After using it for a few days, I have to say Puppy is a mixed bag. Some things are done really well, but other things are disappointing. On the positive side, Puppy has a clean look, is lightning-fast and very small, making it ideal for older hardware. It has a wide selection of tools which should take care of the needs of both everyday users and desktop administrators. On the negative side, Puppy has virtually no security, having the user run as root without a password and, near as I can tell, no package updates. There are relatively few PET packages to be had from the official repositories and Puppy doesn't connect to other repositories, such as Debian's or Slackware's.
My conclusion is that Puppy is an interesting live CD. It strikes me as a tool I could hand to a student taking a system admin course as a demo, or perhaps a Windows admin that needs the functionality of a Linux live CD. It's a tool which could be used to test old hardware; perhaps to wipe or backup drives. It's not a distribution I'd recommend installing on a hard disk or using as a day-to-day operating system or even connecting to the Internet. Its strengths lie in its small size and friendly approach to Windows users, not everyday use.
|Miscellaneous News (by Chris Smart)
KDE becomes default in openSUSE, Novell promotes appliance building tool, Mandriva switches to Plymouth, Sabayon starts testing 5.0, interview with kernel hacker Greg Kroah-Hartman
openSUSE remains one of the most popular Linux distributions. Originally it was very much a KDE focused project, but since it was purchased by Novell the development team has also put a lot of effort into GNOME. However, one problem for new users is that the installer does not default to one or the other, but rather forces them to make a decision between the two. This issue was raised on openFATE suggesting that the installer should default to KDE. This would make openSUSE one of the only major distributions to default to KDE and might give it an edge over the others. The topic was heavily debated among the community with this week Michael Loeffler announcing that the motion was passed. He writes: "After consideration of the project discussion I discussed the feature request further with the openSUSE Board and other leaders within the openSUSE project and came to the decision to follow the request: we will default the radio button to KDE in the DVD installer." The team is adamant that this does not mean GNOME will become a second-class citizen. What it does mean is that new users will simply no longer need to choose a desktop, but the choice still remains.
* * * * *
Interested in creating your own custom Linux distribution, or perhaps a virtual server image? Novell recently released a new service called SUSE Studio, which allows registered users to easily create their own appliances. As Koen Vervloesem discovered in an article for LWN.net, SUSE Studio can be used for much more. The web application which powers the service is closed-source, although it uses the open Kiwi tool in the backend. There are rumours that this will be open-sourced at some point; however, in the mean time Novell plans to sell SUSE Studio directly to companies for use in their own data centres. Koen concludes: "All in all, compared to its competitors, SUSE Studio is without doubt the most easy-to-use, the most well-engineered, and the most efficient appliance builder. Even someone without any previous experience can build a software appliance in fifteen minutes. If it would only offer more distributions than just the SUSE family for the operating system base, it would be even more interesting." Naturally, Novell only wants to support its own distribution, but this might change if the source is opened at some point.
Still on the subject of Novell and openSUSE, we link to a short interview with Greg Kroah-Hartman, a Novell employee and Linux kernel developer. He is passionate about getting as many drivers into the kernel as possible and two years ago offered free driver development to encourage vendors to provide specifications for their hardware: "In return, you will receive a complete and working Linux driver that is added to the main Linux kernel source tree. The driver will be written by some of the members of the Linux kernel developer community (over 1,500 strong and growing). This driver will then be automatically included in all Linux distributions, including the 'enterprise' ones. It will be automatically kept up-to-date and working through all Linux kernel API changes. This driver will work with all of the different CPU types supported by Linux, the largest number of CPU types supported by any operating system ever in the history of computing." In the interview, Greg talks about his work on the Linux Driver project, working with Git and how to become a kernel developer. He writes: "The best thing that everyone can do to help Linux kernel development is to tell the developers if something does not work properly. Let us know if you have problems with the latest kernel builds and especially if something that used to work, now stops working, as we need to resolve that as soon as possible."
* * * * *
Those of you following the development of Mandriva Linux as it marches resolutely towards its next stable release will appreciate the regular "Cooker" updates by Frederik Himpe. The latest one was published over the weekend and includes many welcome improvements, such as the integration of Plymouth, an improved version of "netprofile", and Pidgin 2.6: "Mandriva's boot splash is now provided by Plymouth, the same technology used by Fedora - together with kernel mode setting (currently enabled for Intel graphics chipsets in the standard Mandriva kernel), this will provide a high resolution bootsplash and high resolution virtual consoles and seamless switching between virtual consoles and X; a new, vastly improved version of netprofile makes it possible to define different networks, firewall and proxy settings and urpmi media for different networks; GNOME 2.28 beta 1 (2.27.90); Pidgin 2.6, now with video and audio support for XMPP (Jabber); OpenOffice.org has a new icon set which integrates nicely in the KDE 4 environment; KDE 3.5 is being removed completely from the distribution."
* * * * *
Finally, an update on Sabayon Linux 5.0, an interesting Gentoo-based distribution. Currently at version 4.2, the distro is busy working on the next stable release, with the first beta of version 5.0 now available for internal testing: "Another update here on the release cycle of 5.0 for all our thrilled fans. Beta 1 of GNOME and KDE images has been released to testers. We will be in this phase till about September 2nd as Fabio Erculiani is taking a vacation till then. Once he gets back, we will then look at the issues to hammer out a beta 2." The final release is expected at the end of September: "So we are looking at least the middle of September before a final version will be out and for sure by the end of September, knock on wood." A promotional video has also been made by a community member to promote the distro and upcoming release.
|Released Last Week
Johnny Hughes has announced the release of CentOS 4.8. This is a new version of the project's older, legacy branch built by the recompiling the source package for Red Hat Enterprise Linux 4.8: "The CentOS development team is pleased to announce the release of CentOS 4.8 for i386 and x86_64 architectures. New in this release: there is a technology preview of OpenOffice.org 2.0 included in the updates directory. Known issues: there is a requirement to swap in CD-1 during the install phase of CD-4 during some installs when the comps RPM is required to be installed; an upstream bug with the 3c59x Ethernet driver has been encountered during testing; there are issues with the i586 support on the AMD K6II processor...." See the release announcement and release notes for more details.
* * * * *
Development, unannounced and minor bug-fix releases
|Upcoming Releases and Announcements
Summary of expected upcoming releases
New layout for distribution pages|
With the last week being unusually slow in terms of interesting releases, I took the opportunity to implement some changes on the distribution pages. The main new feature is the addition of a screenshot; as they say, a picture is worth a thousand words and since we have collected quite a few distro screenshots over the years, adding them to the distribution pages was something that I have had on my to-do list for some time. This also gave me an opportunity to make some other changes. The key information about each distribution is now displayed next to the screenshot, followed by a brief description. I hope you'll like the new layout, but as always, all criticism and suggestions are welcome. Most importantly, if you spot any bugs, please report them - preferably by email (otherwise please mention them in the comments section below).
* * * * *
New distributions added to database
* * * * *
New distributions added to waiting list
- ÆrieBSD. The ÆrieBSD project strives to produce a free, multi-platform UNIX-like operating system, including the best possible free development environment. This includes (in addition to traditional BSD environment) free compilers, assemblers, linkers and other tools for various architectures as well cross-building capabilities.
- Gordux GNU/Linux. Gordux GNU/Linux is a desktop oriented distribution and live DVD built from Linux From Scratch.
- juntaDados. juntaDados is a Brazilian multimedia distribution based on Ubuntu. It offers a selection of audio, video and graphics packages to simplify creation of Linux-based multimedia workstations for social projects in Brazil. It also features a well-tested 188.8.131.52 real-time kernel for low-latency audio work. The project's web site is in Portuguese.
- VENENUX GNU/Linux. VENENUX GNU/Linux is a Debian-based distribution created in Venezuela and designed primarily for the Spanish-speaking Latin American market. The project's web site is in Spanish.
* * * * *
DistroWatch database summary
* * * * *
And this concludes the latest issue of DistroWatch Weekly. The next instalment will be published on Monday, 31 August 2009.
Chris Smart and Ladislav Bodnar
If you've enjoyed this week's issue of DistroWatch Weekly, please consider sending us a tip.
(Tips this week: 0, value: US$0.00)
|Linux Foundation Training
|• Issue 721 (2017-07-17): Fedora 26, finding source based distributions, installing DragonFly BSD using Orca, Yunit packages ported to Ubuntu 16.04|
|• Issue 720 (2017-07-10): Peppermint OS 8, gathering system information with osquery, new features coming to openSUSE, Tails fixes networking bug|
|• Issue 719 (2017-07-03): Manjaro 17.0.2, tracking ISO files, Ubuntu MATE unveils new features, Qubes tests Admin API, Fedora's Atomic Host gets new life cycle|
|• Issue 718 (2017-06-26): Debian 9, support for older hardware, Debian updates live media, Ubuntu's new networking tool, openSUSE gains MP3 support|
|• Issue 717 (2017-06-19): SharkLinux, combining commands in the shell, Debian 9 flavours released, OpenBSD improving kernel security, UBports releases first OTA update|
|• Issue 716 (2017-06-12): Slackel 7.0, Ubuntu working with GNOME on HiDPI, openSUSE 42.3 using rolling development model, exploring kernel blobs|
|• Issue 715 (2017-06-05): Devuan 1.0.0, answering questions on systemd, Linux Mint plans 18.2 beta, Yunit/Unity 8 ported to Debian|
|• Issue 714 (2017-05-29): Void, enabling Wake-on-LAN, Solus packages KDE, Debian 9 release date, Ubuntu automated bug reports|
|• Issue 713 (2017-05-22): ROSA Fresh R9, Fedora's new networking features, FreeBSD's Quarterly Report, UBports opens app store, Parsix to shut down, SELinux overview|
|• Issue 712 (2017-05-15): NixOS 17.03, Alpha Litebook running elementary OS, Canonical considers going public, Solus improves Bluetooth support|
|• Issue 711 (2017-05-08): 4MLinux 21.0, checking file system fragmentation, new Mint and Haiku features, pfSense roadmap, OpenBSD offers first syspatch updates|
|• Issue 710 (2017-05-01): TrueOS 2017-02-22, Debian ported to RISC-V, Halium to unify mobile GNU/Linux, Anbox runs Android apps on GNU/Linux, using ZFS on the root file system|
|• Issue 709 (2017-04-24): Ubuntu 17.04, Korora testing new software manager, Ubuntu migrates to Wayland, running Nix package manager on alternative distributions|
|• Issue 708 (2017-04-17): Maui Linux 17.03, Snaps run on Fedora, Void adopts Flatpak, running Android apps on GNU/Linux, Debian elects Project Leader|
|• Issue 707 (2017-04-10): PCLinuxOS 2017.03, Canonical stops Unity development, OpenBSD on a Raspberry Pi, setting up a VPN for privacy|
|• Issue 706 (2017-04-03): Super Grub2 Disk, Snap packages of deepin applications, Subgraph OS routes network traffic for one application, announcements from Linux Mint|
|• Issue 705 (2017-03-27): Minimal Linux Live, sharing control of the operating system, new KaOS features, Uplos32 provides 32-bit fork of PCLinuxOS|
|• Issue 704 (2017-03-20): ToarusOS 1.0.4, Linux Mint's security record, Debian starts Project Leader election, Ubuntu 12.04 reaches end-of-life|
|• Issue 703 (2017-03-13): SolydXK 201701, CloudReady, Solus announces new features, KDE Connect sends text messages from desktop, openSUSE's YaST module for Let's Encrypt|
|• Issue 702 (2017-03-06): Fatdog64 Linux, elementary OS bundled with new netbook, Haiku announces new features, security and the size of a distro's development team|
|• Issue 701 (2017-02-27): OBRevenge 2017.02, Mageia 6 delays, NetBSD reproducible builds, questions about swap space, trying to steam video on a Raspberry Pi|
|• Issue 700 (2017-02-20): RaspBSD, Debian replaces Icedove with Thunderbird, Fedora's licensing guidlines, tips for switching shells, finding battery charge, getting IP address and killing processes|
|• Issue 699 (2017-02-13): Clear Linux, GhostBSD network utility ported to FreeBSD, Ubuntu coming to Fairphone, elementary OS crowd funding an app store|
|• Issue 698 (2017-02-06): Solus 2017.01.01, comparing containers with portable applicatins, Tails dropping 32-bit support, Debian Stretch enters freeze|
|• Issue 697 (2017-01-30): Subgraph OS 2016.12.30, running Ubuntu on an Android phone, Arch Linux phasing out 32-bit support, Linux Mint testing updated LMDE media|
|• Issue 696 (2017-01-23): GoboLinux 016, remotely running desktop applications, Solus adopting Flatpak, KDE neon using Calamares, TrueOS tests OpenRC|
|• Issue 695 (2017-01-16): Zorin OS 12, Peppermint team fixes installer bug, Debian refreshes Jessie media, Ubuntu improves low graphics mode, Exciting things coming in 2017|
|• Issue 694 (2017-01-09): MX Linux 16, Fedora considers systemd security features, DragonFly BSD to support massive swap space, Ubuntu Touch roadmap, Puppy's newsletter, sudo's password prompt|
|• Issue 693 (2017-01-02): Comparing small distros, fig language, video driver comparsion, Debian+PIXEL, Wayland on FreeBSD|
|• Issue 692 (2016-12-19): Bodhi Linux 4.0.0, Cappsule containers, Calculate's new Utilities package, Solus and Ubuntu MATE build new application menu|
|• Issue 691 (2016-12-12): SalentOS 1.0, openSUSE improves YaST, Fedora considers slower release cycle, KDE neon gets LTS branch|
|• Issue 690 (2016-12-05): Fedora 25, Ubuntu adopts rolling HWE kernel, running Android apps on GNU/Linux, Haiku working toward EFI support|
|• Issue 689 (2016-11-28): openSUSE 42.2, Fedora's upgrade path, plans for Korora 25, transitioning from PC-BSD to TrueOS, Webconverger's reproducible builds|
|• Issue 688 (2016-11-21): Endless OS 3.0.5, KDE neon fixes security hole, FreeBSD's Quarterly Status Report, Rolling release trial #2 concludes|
|• Issue 687 (2016-11-14): NAS4Free 10.3.0.3, Fedora gains MP3 playback, budgie-remix becomes Ubuntu Budgie, Ubuntu flavours compared, Rolling release trial #2|
|• Issue 686 (2016-11-07): FreeBSD 11.0, rolling release trial #2, Debian announces supported architectures, Simplicity switching to antiX base, farewell to Mythbuntu|
|• Issue 685 (2016-10-31): elementary OS 0.4, SUSE gains ARM support, Mint improves language support, Dirty COW explained, Rolling release trial #2|
|• Issue 684 (2016-10-24): Ubuntu 16.10, Linux popularity in different markets, Fedora runs on Raspberry Pi, Ubuntu features live kernel patching|
|• Issue 683 (2016-10-17): Refracta 8.0, making packages for distributions, Alpine switches to LibreSSL, 386BSD website publishes classic code|
|• Issue 682 (2016-10-10): KDE neon 20160915, Android-x86 6.0, Fedora warns of update bug, HandyLinux drops English translation, LXQt benchmarks|
|• Issue 681 (2016-10-03): OpenBSD 6.0, DragonFly BSD to support LibreSSL in ports, systemd denial of service bug, upgraded Mintbox Mini|
|• Issue 680 (2016-09-26): Uruk GNU/Linux 1.0, blocking applications at the firewall, Lenovo controversy, Ubuntu running on the Nextcloud Box|
|• Issue 679 (2016-09-19): OpenMandriva 3.0, 32-bit vs 64-bit performance, openSUSE updates, KaOS unveils first run wizard|
|• Issue 678 (2016-09-12): Apricity 07.2016, Mageia adopts DNF, KDE neon to use Wayland, FreeBSD updates Linux compatibility, creating cron jobs|
|• Issue 677 (2016-09-05): Peppermint OS 7, Manjaro updates leadership, TrueOS becomes rolling release, organizing files, creating torrents|
|• Issue 676 (2016-08-29): Korora 24, Fedora 25 to use Wayland by default, Linux turns 25, PC-BSD becomes TrueOS, finding software licensing information|
|• Issue 675 (2016-08-22): Gentoo LiveDVD "Choice Edition", moreutils, Ubuntu improves terminal convergence, MATE packaged for Openindiana, FreeBSD improves video support|
|• Issue 674 (2016-08-15): Zenwalk Linux 8.0, Ubuntu phone follow-up, Lubuntu transitioning to LXQt, Steam running on FreeBSD|
|• Issue 673 (2016-08-03): noop linux and EasyNAS, Debian's GnuPG switch, Fedora "Flock", using "nice"|
|• Issue 672 (2016-08-01): Ubuntu Phone 15.04, Solus embraces rolling release model, interview with Jane Silber, FreeBSD Quarterly Report|
|• Issue 671 (2016-07-25): Slackware 14.2, Point Linux 3.2, OpenBSD disables usermount, KaOS releases significant changes, Fedora 22 reaches end of life.|
|• Issue 670 (2016-07-18): Linux Lite 3.0, Bodhi team plans 4.0.0, pfSense changes licensing, running software across distributions, Linux Mint upgrade path|
|• Full list of all issues|
|Free Tech Guides
This FREE 404-page ebook will assist you in making the leap from competent web developer to confidence software engineer.