Apr
5
2009
The Professional Developer Series
Author: mprokesTable Of Contents:
- Author Biography
- Author Mindset
- Author Tools
- Author Sites
- Volume 0: Computer Science
- Volume 1: The Software Company
- Volume 2: Web Development (book currently in active development)
- Volume 3: Java Development
- Volume 4: C/C++ Development
- Volume 5: Database Development
Author Biography
For the past 12 years Matt Prokes has developed software professionally for companies in the united states, and singapore. He specializes in development both front-end (browser based / desktop) interfaces, as well as back-end server/database technologies. Currently employed as a software engineer for internet broadcasting systems, mn; matt delivers systems which support and enable large media companies such as hearst, post-newsweek, meredith, nbc, cnn, and many others. Personally, matt is a writer, open source publisher, speaker, and enthusiast of today’s advancing technologies.
Author Mindset
Throughout the series you may come to a few conclusions about the authors’ mindset/opinion on development methods, and dare I say technical theologies. So rather then trying to figure out where I am coming from, I figure its just best to be upfront about it. Thus you will know if this series is useful to you due to perspective.
- Windows vs *nix(s): I am agnostic, though I will note there are more developer tools for *nix(s).
- OOP vs Functional: Both, it really depends on the application you are developing here. If you require the terseness of OOP then I would suggest a language such as java. Though if you are simply attempting to write a webservice, it is maybe more easy, straight forward (form a readability perspective) to use a functional language.
- Type of developer: Work: conservative. Play: progressive.
- The scope of a server?: It depends really on the application, and how protective the company is. For this series, and in the interest of a forward looking, and informative book the purpose of a server is to serve static client code, and dynamic sets of data which the client code processes.
- Relational DB’s vs Multidimensional: Relational for now, though the reason why is that so many of today’s applications depend on relational db’s. I actually expect this to change, so again in the interest of a forward looking book series you will probably see me break out couch db at times as well as relational databases.
- Taglibs: I generally despise non-w3c tag libs, and have a belief that they are on their way out. Why? Tag libs un-nessesarly bind you to a vendor of a technology/(ies) that may or may not be around in a few years. This also goes in hand with the belief that servers should serve data not dynamically generated client code. There are better ways, although with that in mind; my job mandates the use of a tag lib at times; roll with the punches.
- Development Cycle: Agile, Pair Programming (at times), XP, Customer Driven
- Development Teams: Large domain specific groups, small project teams (2-3) with focused domain experts, and I always fix other peoples bugs (but not my own), for purposes of cross training.
- MVC: I use MVC as often as I can, I believe in the nice division of code that Model View Controller provides.
- Languages: Java, C/C++, Perl, Javascript, XSLT, XML, Coldfusion, HTML, SVG, PHP, Python, Groovy, Delphi, VB, Actionscript, Ruby, XPath, (you name it)
- SOA: I think Service Oriented Architectures are relevant, if you are delivering/receiving data to/from a third party entity or client. I think that SOA is also relevant for implementing other data services.
- Readability vs. Efficiency: Readability, but at a limited sacrifice of efficiency.
- Objective: My goal throughout these series volumes is to bring your skill-set up to a level that would be expected of a professional working within the field.
Author Tools
These are the tools that I will be using to develop throughout the series. Tools are available for all platforms. unless noted. I will assume a beginner level of knowledge for all tools since tutorials are provided for all tools listed. I am not even perfect with some of these tools, look for a (+) rating to decide which ones are most important to learn first (for a measurable success factor). I will be going over how to use / how I use these tools in detail, though I would not have the expectation of learning every specific tool detail just from this book alone. Its sometimes better to get specific information from the source after you have been introduced to a tool.
Things I don’t use on purpose, but should be noted:
- Dreamweaver, reason: cost, wysiwyg, unnecessary luxury.
- Nvu, reason: wysiwyg, hard to develop with, unnecessary.
- Photoshop, reason: cost
My Computer Setup:
- Office Development OS: (P) winxp (C) open solaris (V) linux,redhat[desktop]
- Home Development OS: (V) winxp (P) linux,opengeu[E17]
OS Key: P = Primary, V = Virtualized, C = Console
Operating System Development Utilities (make doing stuff easier, faster):
- WinXP:
- TaskSwitchXP
- Launchy
- Concept: I do not minimize windows in windows xp, instead I use the taskswitchxp to “preview” the window, and switch to it quickly (a type of multi-desktop on an application level). I use launchy alt+enter command to quickly launch applications rather then using the mouse. It is actually very rare that I use the mouse out side of needing to interact with a UI.
- Linux:
- Concept: I wish something like TaskSwitchXP was on linux, though I cannot find anything like it. So instead I have configured keybindings to switch desktops in enlightenment using alt+(arrow keys), There is also no launchy in linux, the enlightenment run window works ok, though I still prefer launchy more. I also do not minimize windows in enlightenment, thus when switching desktops, I can quickly switch apps on other desktops.
Tools You Will Need:
- Series Reference Bookmarks: http://delicious.com/TheProfessionalDeveloperSeries
- General:
- Scite [help:text,video,wiki] +++
- TortoiseSVN (windows) [help:text,text,video,wiki] +++
- Eclipse [help:text,video,wiki] ++
- Subversion Client [help:text,text,text,video,wiki] +
- WinMerge (windows) [help:text,video,wiki] ++
- Kompare (linux/unix/mac) [help:text,video,wiki] ++
- Dia [help:text,video,wiki] +
- Firefox [help:text,video,video,video,wiki] +++
- Vim [help:text,video,wiki] +
- Volume 0, Computer Science:
- See General Tools
- Volume 1, The Software Company (Start-ups -> Modern):
- Inkscape [help:text,video,wiki] +
- GIMP [help:text,video,wiki] +
- OpenProj [help:text,video,wiki] ++
- Google Calendar [help:text,video,wiki] ++
- Open Office [help:text,video,video,video,video,video,wiki] +++
- Delicious (firefox/ie plugin) [help:text,video,video,wiki] ++
- ScribeFire (firefox plugin) [help:text,video,wiki] +
- Pidgin [help:text,video,wiki] +
- TightVNC [help:text,video,wiki] ++
- Foxit Reader [help:text,video,wiki] +
- Volume 2, Web Development: See Front Of Book
August 5th, 2009 at
I love these stories! Keep making them!