last updated:06 Aug 2003 14:38 UK time
|
 |
|
(Comments added for week ending Sun 11 May 2003) | View Other Weeks
|
|
| Global Variable Subtlety | Sun 11 May | Wayne |
| Ive read many times that global variables are bad in any programming environment. I can see the argument for simple types since there can be no stateful inspection, however an Object is pretty much its own program.
Is that right? |
| Sun 11 May | Christopher Wells | One problem with a global variable is that to know who is reading/writing it you must know the entire program. On the other hand, the 'singleton pattern' is usually global. |
|
| Configure VS.NET 2002 to use .NET Framework 1.1 | Sun 11 May | Lemon |
| Does anyone know how to configure Visual Studio .NET 2002 to use the new .NET Framework SDK version 1.1? I have searched MSDN and havent found an answer. |
| Sun 11 May | Damian | From my understanding, it can not be done. |
| Sun 11 May | Brad Wilson (dotnetguy.techieswithcats.com) | That's right, it cannot be done. If you want to target .NET v1.1, you need to use VS.NET 2003. |
| Sun 11 May | GiorgioG | The upgrade from 2002 to 2003 is $29...
http://msdn.microsoft.com/vstudio/howtobuy/upgrade/vstudio03/
Why bother trying to get 2002 to work with 1.1? |
| Sun 11 May | Lemon | Thanks guys.
It's not that I'm really >trying< to get it to work, but you would expect to just be able to download the new SDK and use it instead of having to upgrade the IDE also. And no $29 isn't much, but I still think Microsoft should make the darn thing work with previous IDE's. Just my 2cp. |
| Sun 11 May | Lemon | Sry 2cp is an Everquest (or MMORPG) term meaning 2 copper pieces. I meant 2 cents. heh. Too many games = not good for sanity. |
| Sun 11 May | GiorgioG | >And no $29 isn't much, but I still think Microsoft should make the darn thing work with previous IDE's. Just my 2cp.
Why spend $ getting it to work & testing it (delaying its release) when a full upgrade is $29. Remember, Microsoft is a business - the goal is to make more money by spending the least amount of resources (time & money) as possible. |
| Sun 11 May | Brad Wilson (dotnetguy.techieswithcats.com) | They balanced the effort of making 2002 compile 1.1 vs. just offering a really great price on 2003 upgrades. That's why there's the $29 upgrade offer. And hey, you get new features and a whole new set of bugs to enjoy! ;) |
| Sun 11 May | Chris Nahr | And as it happens, I just discovered a nice VS.NET 2003 bug...
When you upgrade your VS.NET 2002 solutions & projects to 2003, go through all project files with an editor and delete all HintPath entries for referenced assemblies. The upgrade process neither removes nor updates them, so they still happily point to the .NET Framework 1.0 revision...
That's what I found when I just looked at my C# project files, anyway (extension .csproj). Don't know about other languages, maybe they get updated correctly. Deleting the HintPath elements does not seem to cause any problems. |
| Sun 11 May | . | > ..you would expect to just be able to download the new SDK and use it instead of having to upgrade the IDE also.
Looks like Microsoft is trying to copy Java TOO much. One of the dumbest mistakes Sun made was breaking compatibility all the time with Java. |
|
| Timesheet software? | Sun 11 May | George |
| I wonder if there is any good timesheet software for developers.
When developers in my company are working, they write a timesheet, something like:
09:00-09:30 Worked on method X, implemented a simple algorithm for doing Y. It works well.
09:30-10:30 Wrote about half of the code for class C.
Then they send the timesheets to the project manager, which centralises them, merges them, and sends them to the clients.
Is there a GOOD program to do this, which is NOT web based?
I am interested in a standard Windows application, which should be able to work in disconnected mode, too, so it works for programmers working from home, even if they dont have Internet access.
Is there such an application?
Thank you! |
| Sun 11 May | Steve Jones (UK) | A lot of people write their own Timesheet software, although with varying degrees of success.
As your requirements seem quite simple, it might be worth doing it that way, so you're not tied to a particular product / company that may not exist when you need changes or an upgrade.
As an incentive, you could use it as a simple introduction to .NET programming for someone on your team. Unless they're all up to speed, in which case this doesn't apply. |
| Sun 11 May | Rob Leighton | We've used Timeslips here at our company for the last 7 years. Check it out at www.timeslips.com |
| Sun 11 May | Hardware Guy | Try Timeless Time and Expense.
http://www.magsoftwrx.com/ |
| Sun 11 May | www.marktaw.com | I've used & liked the Allnetic Working Time Tracker. It lacks the ability to produce reports so at the end of the week I end up transferring information by hand, but it's pretty easy to use and prompts you if your computer changes from idle to active or v.v.
http://www.allnetic.com/working-time-tracker/index.html |
| Sun 11 May | www.marktaw.com | .. The time tracker is better at tracking time than reporting it. A good Access application should be able to do this easily. |
| Sun 11 May | Snacky |
Could be useful (if any) to have
a chargeable and not not chargeable flag
against each of your time sheet records.
This could make the process of invoicing a bit less painfull |
| Sun 11 May | Albert D. Kallal | I purchased a small time & billing package for the palm pilot.
However, it did not have anything on the pc side. I just threw something together in ms-access in one evening that did what I wanted.
Now, when I need to create a invoice, I just select on my palm what project I want to invoice for. I sync, and then generate the report in ms-access.
The results take no data re-typing on my part.
The resulting invoice that gets printed from access to plain paper looks like:
http://www.attcanada.net/~kallal.msn/test/IV1.html
So, the whole application was only one evening of my time to create. The above nice invoice report was just a bonus. I lifted the nice layout from a clients project I did several years ago. To be fair, those boxes, and nice lines did take a good part of a day to get right. If you don’t need the fancy boxes etc, then the report is a snap to create, and takes less then a half hour to create the first time. Affter that, it is just a mouse click!
So, if your billing is for internal use, then write something in ms-access.
Even better is using something like timeslips as mentioned. Even some law offices still use timeslips. It is good for consulting also.
Anyway, the software I used on the palm side was zorskware.
http://www.zoskware.com
I don’t remember the price, but it was barley $50
I have also thrown databases together for the palm in less then a day that would duplicate the functionality for billing anyway. (I used HandiBase, and it is $30). It again is ideal for this. They even have some free time/billing templates.
http://www.ddhsoftware.com
If you don’t need the palm, and you are stuck at your desk all day (yuk!), then I would suggest timeslips, or roll your own.
These things are fun, and very easy to write.
I would eat your own dogfood on this one. I did!
Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com
http://www.attcanada.net/~kallal.msn |
|
| The Craft of Programming | Sat 10 May | Rich |
| Programmers are craftsmen and craftswomen. They are commonly thought of as—and frequently titled—engineers, but few working programmers engineer things. Most build software. They craft it into existence. http://www.ftponline.com/vsm/2003_06/magazine/departments/softwarearchitect/ Good article by Alan Coper. |
| Sun 11 May | Dewd | Could it be related to Paul Graham's latest article:
'Hackers and Painters' - http://www.paulgraham.com/hp.html
Cheers |
| Sun 11 May | . | Be aware of the different usages of terminology here. Cooper is using craftsman to mean creative high value work, and he is using engineer to mean systematic but routine work, along the lines of something being mass-produced.
He also mentions the way the rise of mass-production in devalued craftwork.
I think he probably had a good point beyond the superficial reading of the article, but he should have been more careful to get it across. |
| Sun 11 May | . | I think Cooper's theme is the importance of recognising the talented individual, and it ties in with the common theme here of foolish managers.
He has used references to engineers as a response to the frequent use of engineering terms and analogies in software development, but I think that reference is not related to his man theme. |
| Sun 11 May | Michael Moser | http://www.paulgraham.com/hp.html great article.
Usually, when people state that 'programming is like' art my reaction is:
what? If programming is an art then it can't be taught ?
Or maybe this is just an excuse of the Master Programmer who does not whish to be bothered with the task of explaining?
Paul Graham explains his point in terms of the process of learning how to paint painting is a skill learned by doing it yourself, by example and by imitation - sort of like programming. |
| Sun 11 May | The Real PC | [Cooper is using craftsman to mean creative high value work, and he is using engineer to mean systematic but routine work, along the lines of something being mass-produced.]
I don't understand how engineering work could be routine, since it requires skill and knowledge. I thought engineering involved inventing solutions to complex problems -- isn't that similar to programming? |
| Sun 11 May | Brad Wilson (dotnetguy.techieswithcats.com) | I think you'll find that the vast majority of engineering is NOT finding unique ways of solving problems, but rather identifying problems to fit an already existing solution. Most engineers that I've known were, honestly, boring people with boring jobs. Very few were innovators. That may just be my exprience, of course, but I've heard enough people talk about it to surmise that it's pretty common. |
| Sun 11 May | Herbert Sitz | Real PC -- Cooper's certainly not saying that the work of an engineer is routine. The key thing to understand is that engineers don't actually build the things they design:
'But engineers don't actually build things. They solve complex and demanding technical problems necessary to building things, but they leave the actual creation to others. Engineers don't build bridges; ironworkers do. Engineers don't build software; programmers do.'
I think a lot of people are misunderstanding the main point of Cooper's article: Engineers design things. Craftsmen build things. Programming involves more building than it does design [per Cooper].
I think one reason people are misunderstanding Cooper is because a lot of us work in situations where we do both the design of the overall architecture of a program (the 'engineering') and the building of the program itself (the 'craft').
Even so, I agree with Cooper that programming is more craft than engineering. I like to think of myself as a programmer to a woodworker lovingly crafting a small box. It helps me keep the KISS principle in mind.
In situations where there is a division of labor in designing software, such as a large project where a few experienced developers establish the overall architecture and then use a team of programmers to implement it, I think Cooper's analogy is right on. It seems to me that the team of programmers is a lot more like a construction team than to engineers. Do the programmers/construction team frequently go back to the engineers and explain, 'We can't do it this way?' Sure. And programmers may do more low-level 'nitty gritty' design than construction workers. (I'm not sure about that, but even if they do you can find another craft where there're lots of low-level implementation questions where the craftsman makes decisions himself.) In short, Cooper's analogy rings true for me. |
| Sun 11 May | The Real PC | [Good engineers love their work because they love to solve difficult problems. Good craftsmen love their work because they love to make things. Good programmers must do both]
I read the article and most of it makes sense to me.
He didn't say engineering is routine work; he said engineers are designers while programmers may or may not design their software, but they always build it. Engineers don't build what they design.
I especially liked his statement that building software is important! |
| Sun 11 May | . | > I think a lot of people are misunderstanding the main point of Cooper's article: Engineers design things. Craftsmen build things. Programming involves more building than it does design [per Cooper].
Herbert, the point I took from Cooper's article, and it's intriguing in being the reverse of a lot of commentary we see these days, is that programming as commonly practised is BETTER than engineering as commonly practised. However, as mentioned, I think the comparison with engineering is actually secondary to his main theme.
Moving on from that and addressing the engineering comparison, I think it's important to see that he's talking about the practise of engineering as an occupation, and that this is not necessarily the same thing as engineering as art, particularly the art of designing.
Thus there are a few different types of 'engineering' that we could put programming into. This is not his argument, but mine. I would say that, if we're talking engineering as elegant design, then, yes, programming falls into that category.
If we're talking about engineering as industrialisation of the software development process, then this is something that is occurring, but which, Cooper maintains, conflicts with the true spirit of the best programmers. |
| Sun 11 May | X. J. Scott | Wow! You guys that are doing builds manually should cehck into this new think called a compiler.
Myself, I just do design work writing code. I haven't built anything by hand for a long time -- the last time was when I needed to write some code for a microcontroller and I didn't have an assembler for it and writing an assembler would have taken longer that writing the program directly in machine code using the chip manual's opcode reference as my guide. Amazingly, the program, about 1000 bytes long, worked perfectly the first time.
Anyway, most software work done nowadays is design work. The days of having to build manually are past. Someone should let Cooper know that building the product is now an automated process. After looking into compilers, he might want to check out IDEs and frameworks. All these things can really save a lot of time. |
|
| Closing Remotely a Program | Sat 10 May | Snacky |
|
Imagine that want to send a request from \\Server1
to close a program (pretty much like CTRL + ALT + DEL on the application) which is running on \\Client1
Lets says the program is called MyProg.Exe
How could I accomplish this ?
Should I use DCOM? COM?
Any sample code to share? |
| Sat 10 May | Robert French | Is the application on \\Client1 connected to \\Server ???
I.E. can \\Server pass calls into \\Client1 ???
COM, DCOM, and COM+ are all ok for this type of distribuited application architecture, but you will have to write all of the marshalling/unmarshalling (plumbig) out by hand.
You coould also use CORBA and IDL with a C++ App, or if the 2 systems (Client and Server) are newer, you could do it in C# or another .NET (IL supporting) Language.
.NET would be the fastes solution, providing you can make sure that the Clients and Server have the latest SP's for the framework, as .NET makes the serialization totally transparent, the Client would be acting as though the request was a local one, even if it was sent from the Server ...
Hope that Helps!
Cheers! |
| Sat 10 May | Big B | http://windows.oreilly.com/news/win2kcommands_0401.html#rkill |
| Sun 11 May | anon | http://www.google.com/search?hl=&cat=&meta=&q=remote+process+kill+windows |
| Sun 11 May | Snacky | Robert :
Using .NET will it work fine with WinXP, Win98, Win2K clients but also with Citrix or Terminal Server clients (connections)
Thanks in Advance!
Snacky |
|
| IDEA, Eclipse and others | Sat 10 May | raindog |
| Theres a number of nice Java IDEs available: Eclipse, IDEA, SlickEdit, etc.
So far, Im very satisfied with IBM Eclipse. However, I hear a lot about the IDEA recently (some people even consider it to be a killer app for Java).
Well, the IDEA is commercial and Eclipse is free. So, the question to the developers who used both:
What are the IDEA advantages over Eclipse?
Thanks! |
| Sat 10 May | Giovanni Corriga | I haven't used IDEA so I can't give you a direct answer. But you can try and give a look to this page: http://c2.com/cgi/wiki?EclipseVsIdea |
| Sun 11 May | Rhys Keepence | Eclipse is nice and (once armed with some necessary plugins) does most things IDEA does. However IDEA just works better than Eclipse. For example, there is a keyboard shortcut for practically anything. Its a huge productivity boost once you work it out. Something else that springs to mind is that the JSP and XML editor does code completion based on the TLDs and DTDs, which is rather helpful. |
| Sun 11 May | Arron Bates | While I believe that every tool deserves a little bit of lee way into letting it tell the user how to work it, one of the best things I like about IDEA is how flexible it is to change to how you want to work, rather than just force it on you.
For example, you can define code style, key mappings and everything else, and set them to the project, so that each project can have different versions of each.
There's a heap of little things that IDEA does that eclipse doesn't. Another cool thing is the highlighting of various things in a tiny side bar. You'd have to use it to see what I mean, but the app is simply full of the 'little things' that make my life a ton easier. And those things not built in, are made by other developers as plug-ins (like column selection amongst others (like tetris!)).
One thing I have to say about IDEA is that although other IDE's have the same features, IDEA has implemented them better. All of them has a code formatter, but IDEA's is much more complete and flexible. All of them can have the highlighting changed, but IDEA has more syntax colouring options.
To pick the best feature in IDEA... built in local VCS. OK, everyone will say they have CVS and they're funky with it, which is fine, but not the same thing. You can use whatever VCS for the team, but the built in one means you can set versions and labels and whatever else against the code on your own box, outside of CVS. IDEA also sets versions of files against common things, like saving files, running project etc, so it's simply happening in the background.
For example, I had a pile of code not quite ready, but had to get working on a quick task for something else on code someone else just updated in CVS. I simply set a local label in IDEA, pull out the current version from CVS, did the deed, then got back to what I was doing by getting local lablel and keept on going. There's so many uses for it, it's simply awesome. Let alone the snafu's it can get you out of if you do something wrong with stuff local. You've done a pile of work, something bad happens, that chunk of work is gone. Simply jump into IDEA's local VCS, get a version from the last time you know it was working (which is set automatically by IDEA) and keep going. It's that simple.
I've used Eclipse, NetBeans, and JBuilder on the day-to-day basis, but IDEA rocked my world so much I bought my own copy even though the others are free (and I don't really have that much cash floating around). That is to say that it fits 100% to the way I like to work and use apps.
As a dynamic, I'm in a team who uses Eclipse and I use IDEA. The Eclipse guys have many more issues than I get just in dealing with the daily grind. I'm a happy customer. |
| Sun 11 May | Andrew Murray | One nitpick with IDEA is the speed of the UI. I run it on a Gentoo Linux box, AMD 1.5 XP, 256mb ram and the UI still chugs big time. |
| Sun 11 May | Colin Evans | While IDEA has a lot of features that make it competitve with other Java IDEs, I think that the thing that pulls it ahead is the use and integration of those features. The user interface is very keyboard driven, very unobtrusive, and vey customizable. The Intellij team has done a great job at making an enormous number of features and functions accessible and comprehensible in a consistent interface. |
| Sun 11 May | Walter Rumsby | Take 1x PC with less than 256MB of RAM.
1. Attempt to do something in Eclipse (this takes forever... give up)
2. Attempt to do something in NetBeans (this takes forever... give up)
3. Attempt to do something in JDeveloper (this takes forever... give up)
4. Do it in IDEA (in fact you can also run a J2EE server, browsers, text editors, Putty windows, etc on the same machine at the same time and achieve greater response times than running Eclipse, NetBeans or JDeveloper by itself).
I've heard about IDEA being slow on Linux, but then again the person who turned me onto IDEA uses it on Linux and reports no such problems, so I'm not sure what is the cause of these performance issues. On Windows however IDEA is the best proof that a Swing app done right performs well - i.e. it requires significantly fewer resources then Eclipse AND it is more responsive.
Other features I like:
* Little reliance on wizards - and when they are used all side effects are visible.
* IDEA projects are basically paths and not lists of files, IDEA is usually happy for you to change file names via the operating system, etc and does not throw temper tantrums like most other IDEs.
More than anything it is mind bogglingly intuitive and consistent in its UI. The product's motto is 'develop with pleasure' and this seems to be the focus of the IDE - other IDEs seem to get bogged down with other aims. |
| Sun 11 May | Arron Bates | I run IDEA on SuSE linux with my trusty, no-name lappy (1.1Ghz, 256mb), and it's just fine.
I do turn off the eye candy (IDEA's own anti-aliasing text etc) which I don't have to on a beefier desktop, but it's still great.
Truly enormous projects get bogged down with the loval VCS. If you set it so that it's only keeping a couple of days or making simply labels less frequently (like project make only or whatever), then it'll pick up its game again.
The other thing to do is to tell its JVM to run in incremental GC mode.
It's still one fine app. Colin and Walter both have it right, it's focused on making life more intuitive. They bost that every function can be custom key mapped. Which is true, except for toggling a file's read-only attribute. You have to double click an icon, and I cant find the key mapping for it, otherwise I'd bind that too! :P |
|
| Windows update and development | Sat 10 May | william williams |
| We write commercial shrink-wrap software for Windows. Currently, our platform for development is Windows XP Professional. My question is, and assuming that “security” is not a priority, how updated should our development platform be in order to minimize configuration and compatibility issues with other versions of Windows?
These are some candidate configurations:
Win 2000 Pro out of the box
Win 2000 Pro SP3
Win 2000 Pro SP3 + latest updates
Win XP Pro out of the box
Win XP Pro out of the box
Win XP SP1
Win XP SP1 + latest updates
Thanks. |
| Sat 10 May | Anonymous Coward | All of the above.
The only way to know if a configuration works is to test it.
We keep a variety of different configurations for test and development.
However most are configured to our corporate standard: Win2k sp 2 + security hotfixes.
Security and EULA are our largest issues. |
| Sat 10 May | Robert French | Possible System Configurations are always an issue with the software we develop and deploy to our 700,000+ Subscriber base, so I hear you loud and clear.
Here is the process that I follow:
1st) You HAVE to set your Includes, Excludes, and Assumptions up... this prevents confusion and saves tonnes of time in the long run ..
Example:
Included: 98a, 98se, ME, 2k-pro, XP.
Excludes: 95, NT, 98a (Unpatched)
Assumptions:
All Included Operating Systems must be patched to the highest working patch level.
If a Patch is tested and found not to work, it will be added to the Excludes until a workaround can be provided.
Ok, so now everyone is on the same page, and has realistic expectations... what about testing in a timley manner though? ....
2nd) We use VMWare (http://www.vmware.com/) This allows us to have a single box (lotts of RAM, BIG HD) setup with each OS and patch level and combinations, all installed in seperate VM's.
3rd) We have Testers (I saw a realy good article somewhere.... ;-) ... http://www.joelonsoftware.com/articles/fog0000000067.html )
4th) We let our QA team loose, and it's up to them to prove our Includes, and Assumptions were NOT met, allowing us to tighten the belt.
In all cases to-date, Developing on Systems that are always 'up-to-date' I.E. Latest OS SP's, Browser SP's, and Development Software SP's (XP Pro) .. Has allowed us to meet not only our Includes, but our Excludes as well... (Providing the Excluded OS is patched to the higest level)
This dosn't mean that we change our support policy, but it still nice to know.
Note: .. you will most likley find that setting a minimum Version of IE as a requirement helps ALOT ... Mickeysoft has been patching the OS through browser upgrades (IE) for years, and if you plan on supporting 98 flavors of Windows for your users... then IE 5.5 should be MANDITORY...
Hope that Helps!
Cheers! |
| Sun 11 May | Mike | 'assuming that “security” is not a priority'
You are definitely a windows developer. You don't happen to work in Redmond do you? |
|
| Complete treatment of character encodings | Sat 10 May | das gringo |
| Is there a good text or article that talks about encodings, their history & drawbacks, and maybe how many common systems use them? It always scares me to deal with characters, since I feel theyre messy internally, like all my tools work hard to hide everything from me. And it seems there can be a lot of information loss in conversions.
Thanks. |
| Sat 10 May | Michael Moser | Developing International Software for Windows 95 and Windows NT : A Handbook for Software Design
by Nadine Kano
- we had this book at work, it had all the character tables that you could only imagine.
Developing International Software
Nadine Kano
November 2002 2nd Edition
- is said to be an update. (i didn't see this book) is said to cover changes in internationalization that were introduced since windows2000. |
| Sat 10 May | fool for python | Tim Bray has some recent articles that area worth checking out:
http://tbray.org/ongoing/ |
| Sun 11 May | Nate Silva | I find http://unicode.org/ to be an excellent resource. The page on UTF encodings -- http://www.unicode.org/faq/utf_bom.html -- will answer a lot of questions about exactly how characters are encoded, how many bytes they take, etc. And the section called 'Code Charts' is just plain fascinating.
Someday everything will be in Unicode.
In the meantime, if you have to deal with non-Unicode encodings of East Asian text (called CJKV - Chinese, Japanese, Korean, Vietnamese), by far the best book is 'CJKV Information Processing' by Ken Lunde. It is extremely detailed, and gives you a small amount of history and cultural rationale for why those encodings were developed. |
|
| The most elegant of architectures (cont) | Sat 10 May | guy (uk name, not us colloq noun) |
| Ok, heres the deal. We all prostitute ourselves at work coz we must, or we choose to. But what would we like to do?
Context: youve earned / won / inherited (or polymorphed) a fortune.
You dont have to work, but because you want to, say, learn a language, been asked to by a friend, always wondered whether the grass is actually greener, you embark on a project with total control of the architecture. What do you choose?
ms - c# - sql svr - asp?
unix - java - oracle - jsp?
linux - python - mysql - php?
xml as a delivery mechanism,and oh yes, agile methodologies?
e) all of the above
answers on a postcard . . . |
| Sat 10 May | | What the hell are you rambling about? |
| Sat 10 May | | I choose to learn the concepts/theory not the syntax. Aren't the coder jobs all going to India anyway? |
| Sat 10 May | Spam | Ummm....remind me which technology / methodology / paradigm puts me on the first tee box at 7:00AM with the sun slowly coming up while the dew evaporates from the lush green fairway.
Seriously. |
| Sat 10 May | mmmm....methodology... | mmmmmmm....skiing......
moving to austria and using their ski fields forever...
drinking mulled wine in their chair lifts...skiing down...back up..down...
wth any luck Id die in a skiing accident caused by too much mulled wine. |
| Sat 10 May | one programmer's opinion | Seems to me that you are confusing specific technologies with architecture. |
| Sun 11 May | realist | I would use DBaseIV databases with a Borland Paradox front end. |
| Sun 11 May | www.marktaw.com | I would hire programmers to do all the things I always thought was cool but never had the patience to do myself. |
| Sun 11 May | Luser | linux - java - servlets - sapdb
...it's the platform of sweetness. |
| Sun 11 May | George | Borland Delphi as the clear #1 choice
Python |
|
| Developing a full blown compiler ? | Sat 10 May | Snacky |
|
Is it possible nowadays for a single person to write a full blown compiler in a year or two ?
Will it be stupid to not use the available tools
like Lexx & Yaxx to decrease the dev process of a compiler |
| Sat 10 May | S.C. | It depends. There are still people who build their own cars. Of course re-inventing the wheel will take more time but if you are not in a hurry and you enjoy the process it worths it. |
| Sat 10 May | Neil Butterworth | 'Is it possible nowadays for a single person to write a full blown compiler in a year or two ?'
Depends on the language you want to compile. You should be able to write a subset Pascal compiler in a few weeks. Writing a full C++ compiler on the other hand would take many man-years.
'Will it be stupid to not use the available tools
like Lexx & Yaxx to decrease the dev process of a compiler'
Once again, it depends on the language. Some are better suited to application of techniques such as recursve descent. Most commercial compilers use a combination of techniques. |
| Sat 10 May | Fredrik Svensson | Having made a C compiler at university using flex and bison I found it very useful knowledge. You understand the difficulties involved in compilation, and you are not so fast blaming the compiler for everything. Complaining that the compilerdevelopers should do a better job.
Anyway I stumbled onto this article at ACM Crossroads
http://www.acm.org/crossroads/xrds7-5/bison.html
I will not build a compiler, it is way to complex and requires many man years, but occationally I encounter the need to build some simple parsing tools.
I can use flex/bison without too much problems but do anyone have any experience of the newer tools discussed in the article ?
I have still an intrest in compilers and read papers when I find them. The compiler course had the Dragon Book, but are there any other book recomendations ?
I work sometimes closely to our companys compiler group, but they have no recomendations outside Japaneese books and papers.
I have also read some of the Intel whitepapers about their compiler.
At the end it boils down to that knowing the internals of a compiler is not my core task and time does not always allow to studdy odd subjects like this. Also there are so many more subject to studdy.
Anyone know about some kind of online reading group where say a paper a month is released and discussed. Theoretical Computer Science. Just to keep your mind on its toes. I try to read DEK when I find time. But it is also hard, since you have no guidance or discussions like at University.
What it boils down to is that I miss some theory from Uni but I will not trade my job for a PhD program just yet. I still have theoretical challenges with engineering codes etc. more so than normal software development. Sorry for the rant, the compiler started it.. |
| Sat 10 May | Joel Spolsky | I've never found lex and yacc to be worth the trouble. Hand coding lexers and parsers just ain't that hard. |
| Sat 10 May | Eric W. Sink | Several years ago I wrote a C compiler in C. The target architecture was a 68000 and I got it to the point where it could compile itself. Fun project, and I learned a lot about coding.
I hand-coded the parser (recursive descent). Lex and yacc didn't have much to motivate me. |
| Sun 11 May | Roland Kaufmann | Regarding books on the subject, I would recommend the book 'Modern Compiler Implementation in Java' (ISBN 0-521-58388-8) by Andrew W. Appel, if the dragon book seems to rigid or old-fashioned.
When it comes to tools, the only thing I have to say is to try to stay clear of lex && yacc and anything that is related to these, if possible, as the code they generate really cannot be said to be designed as much as 'thrown together', IMHO.
Unfortunately, they seem to have assimilated the field. For instance, the book above uses JLex and CUP. |
| Sun 11 May | Will Glass-Husain | I built several compilers using JLex and CUP after reading the Appleman book. The book was a basic introduction to compilers and had very practical basic compiler coding tips. It was a nice contrast to the Dragon book which covers important topics, but is more theoretical and leaves much of the coding 'as an exercise for the reader'.
JLex and CUP worked okay with two exceptions (1) the error handling capabilities were poor, and (2) I had trouble getting JLex to handle unstructured text (e.g. documentation of equations.)
I'm considering switching to JavaCC, which seems to be a standard in the Java world and is possibly more flexible. Any comments from the field?
By the way-- in response to Joel-- the reason I like using a tool instead of direct coding (and he's right, it's not hard) is maintenance effort. I've frequently made small changes to the language syntax targeted by the compiler. To implement the change I make a small edit to the language descriptor file and run an ant script which calls JLex, CUP, and javac to generate and compile the java code. Time elapsed -- very little. |
|
| Linus on Open Source documentation | Fri 09 May | John Wilson (www.jowilson.org) |
| In a recent LKML thread, Linus Torvalds gave some of his thoughts on documenting code in Open Source projects:
Some people care about documentation, some people dont. Thats a fact, and spouting platitudes about improving their work just doesnt _matter_. The whole open source idea is that people do what they care about and what they are good at, and exactly because they arent forced to deal with issues they dont have a heart for they take more pride and interest in the stuff they _do_ do.
Personally, I dont write documentation. I dont much even write comments in my code. My personal feeling is that as long as functions are small and readable (and logical), and global variables have good names, thats all I need to do. Others - who do care about comments and docs - can do that part.
And you know what? That _lack_ of comments and documantation improves my work. Not because documentation is bad, but because I DO NOT CARE. So I concentrate on the stuff I do care about.
Comments? Is this true in the non-open source world as well (or even true at all?) My first thought was that leaving out documentation may improve the coders work, but it probably leaves more work for the maintenance programmer or other coders on the team. |
| Fri 09 May | John Wilson | Fixed link: http://www.kerneltraffic.org/kernel-traffic/kt20030509_215.html#3 |
| Sat 10 May | Li-fan Chen | It depends on the nature of the maintanence. If you got a maintanence contractor or coder who lives with the code for a year or more, he'll handle just fine (plus some hand-holding). But if he is expected to write a new component that must depend on knowledge of the rest of the system (lots of magic values and dependancies) and he's got to do it NOW! Then you'll run into some problems that could be eliminated or reduced with good documention.
It also depends on the nature of the maintanence. Is he expected to make major upgrades? Architectual changes forcing a lot of rewrites? How bad is the code base? Is it spagetti code you are maintaining or loosely coupled components by the thousands and each is separate and distinct? |
| Sat 10 May | | I agree. The codgy old bastard that took me under his wing when I was fresh out of school always said 'The code IS the documentation!' |
| Sat 10 May | Erik Lickerman | For some people who say 'the code is the documentation' it is just and excuse for laziness and dicking over anyone who has to work with your code in the future. For others it might be mostly true, especially if you give highly descriptive (and often long) variable names.
For the average coder there is actually a perverse incentive not to comment. It makes coding take longer and makes it easier for them to be fired because it is easier for others to maintain their code. |
| Sat 10 May | Mitch & Murray (from downtown) | I equate proper (useful) code comments to a level of professional discipline. |
| Sat 10 May | oc | And the reason open source is not taken seriously is... |
| Sat 10 May | Mike Gamerland | To the question is it an 'open source issue?' No it is not. It is a source issue. You will find undocumented garbage code at MS. You will find it at any fortune 5000 company and probably just about anywhere if you look. It is not the deciding factor of Open Source. Frankly, you have not idea whether the next piece of proprietary software you buy is documented at all. Whether it was developed by extreme programming, OOD, or 2000 contractors with only the knowledge of what they were told to change. If you think otherwise, you are kidding yourself.
If it is not a requirement of your workplace, by which I mean it is reviewed and if inadequate or missing will not get loaded, then this will happen. It will be the new developer or the one making a production fix that needs to get out there now, and they promise to update the documentation later.
Is it laziness? To a certain extent, although people will argue the priority of doing so given 'X' minutes in a day. If documentation is less important than getting one more change done, documentation will slip. After a few iterations of this, it is likely that they end result is code, whose documentation you cannot trust. So is that worse? |
| Sat 10 May | Mitch & Murray (from downtown) | That proper code comment habits and general documentation is even debated here strikes me as amazing. I mean I am blown away by any argument against or rationalizing no/poor code comments and docs.
There is no excuse for not doing it / insisting on it. Period.
Oh yeah, and the Linus Meister just went down about twenty notches in my book based on his comments on the subject. What a dumbass.
David Cutler - you are still safe in your role as the senior Grand Poobah in the OS Development Derby. I've seen some of the BLISS VMS source, and it is just _fine_. Sorry to see you don't seem to be running Formula Atlantic this year. |
| Sun 11 May | andrew m | Good documentation tells you stuff that you don't know when you're looking at the code.
Code can tell you what program has been written, and how it works. This is important to know.
Code can't tell you why you didn't write the program another way, or why you didn't write a completely different program to start with. These things can actually be important too.
Personally, I figure that if you can explain what you're doing to another person in 5 minutes, writing it down so that other people can refer to it later on shouldn't take more than 10 minutes, even if you're a slow typist. However, if you do have a willing person available, it's perfectly reaonable for them to do the typing, as long as you make sure they had an accurate understanding of what they're writing about.
I suspect Linus does a fair amount of talking about Linux, and while it's practically required for someone to summarise the decisions for the benefit of other coders, there's no moral requirement why he should be made to do that himself, especially if someone more interested and able to do it is available.
If anything, most coders need a competent technical writer to do their documentation. :) |
| Sun 11 May | Nat Ersoz | '...the Linus Meister just went down about twenty notches in my book ...'
I'm sure he cares. |
| Sun 11 May | Barry Sperling | I'm developing the same program that I started working on 3 years ago, about half of which I have written. It's complex enough that my comments from 3 years ago are still useful in shortening the update-correction coding. My younger self is speaking to my older self and helping it out. Thank you ME! I'm commenting now for my future self, who will have forgotten the point of an algorithm, a reason why an 'obvious' change will break another part of the program and a special feature of the language that really helps to do what I want done. |
| Sun 11 May | John Wilson | Andrew M.: Yeah, I can see that. One could almost say that the linux kernel mailing list serves as a repository for the type of documentation you're talking about. ;)
The more I think about it, the more I come to the conclusion that not everyone can be Linus. Maybe Linus can just omit documentation and commenting in large projects, but us mere mortals don't have that luxury. But he's also right in a certain sense. Switching from writing good code to writing good english documentation is a task switch, at least for me it is. The two tasks use different parts of my brain.
To get back to what Andrew was saying, one way of looking at it is that there's benefits and disadvantages to tightly coupling the source code to the documentation. Benefits are that that the documentation is right there in the same file as the source. Being right in front of your face, the red block of text (or whatever color comments are in your editor of choice) makes it easier to pay attention to before you make that 'obvious' obvious change.
But there's quite a few disadvantages as well. I mentioned the documentation task-switch earlier. The effect of this is that it becomes un-motivating to switch from changing code to changing the documentation that sits right above the code.
Something I've found recently that helps is to keep a seperate 'documentation tree', in fact, the first file I open on any project now is documentation.txt, which contains an overview of the whole project (usually I base this on a sheaf of paper notes). Then as I write code, usually after I finish a function, or major component, I flip over to the documentation window and write an english description of the function or module or whatever. On small projects, everything fits into documentation.txt, larger ones get a documentation directory and seperate files. Having two seperate editor windows helps keep the task switch explicit (and actually makes it more fun, because I like writing english and I like writing code).
Of course, I still comment my code with brief summaries of functions and explanations of tricky sections, usually with a tag that says 'for a detailed explanation, see such and such in the documentation file.' |
| Sun 11 May | Roland Kaufmann | 'That _lack_ of comments and documentation improves my work.'
This coming from a man who thinks debuggers are evil because problems will always be better analyzed by reading printf() output. 'Nuff said.
But then again, if the code is the documentation, then all the code will be bug-free, because it will always be in accordance with the specification, by defininition! |
|
| Java 1.5 – a huge philosophical shift for Java | Fri 09 May | Ethan Herdrick |
| http://java.sun.com/features/2003/05/bloch_qa.html
This is a major turning point in the philosophy of Java. The changes in 1.5 make it natural to write much more concise, but less beginner-readable Java code. When I first started using Java, I liked how there was (almost) total separation between the grammar and the APIs, and that everything was explicit. But the resultant logorrhea began to annoy me after I got good.
Post 1.5 Java – let’s call it New Java – blurs the line between language and API. The enhanced ‘for’ loop, for example, knows the Collection interface and calls methods on it. New Java feels more like C in its embrace of brevity. This is great - a language ought to sacrifice a little readability to beginners to multiply the productivity of experts.
Let’s give credit to MS: I think the emergence of C# and .NET was key in putting competitive pressure on the Java guys to be flexible on this issue. I’m glad there is finally some tough competition for Java, and I think this shows how developers in both camps will benefit.
Between Java 1.5 and the new Java IDE (IntelliJ Idea) that is even better than VS.NET, I think we are beginning the Golden Age of Java.
Hope this hasn’t been too breathless for everyone, but I am pumped up! |
| Fri 09 May | T. Norman | Finally! What took them so long.
One of my biggest pet peeves with Java is the treatment of primitives vs. objects -- like having to wrap them to put them into a Collection and unwrap them after extracting them from a Collection. Thank goodness this next release addresses that. |
| Fri 09 May | Bob, in Kirkland | I am stoked as well. My biggest frustration is that I have to wait until fall to begin using 1.5. I see these improvements as really speeding up my development. I really am beginning to C emerge in JAVA again, and that is a good thing. |
| Fri 09 May | Daniel Shchyokin | I wouldn't say huge, but seems nice, and I would say readability isnt that big an issue |
| Fri 09 May | Erik Lickerman | No- this is huge and focusing on readability would make ity seem small. The few changes they are making to the language are little things which I must admit have been annoying me for some time. The fact that collections are class aware now will save a lot of typing, and more importantly, help to constrain things at compile time which normally would have to be dealt with at runtime.
I also think this shows that despite complaints about Sun's stewardship of Java, on the average it is working well. I believe that giving it to a standards body early on would have seriously slowed advancement of the language. These latest changes indicate to me that the java community process is working reasonably well.
Slightly off topic, I think this is also a good thing for Microsoft .NET people. I know we all like to bash other's tools, usually in at least partial ignorance, but we must admit that competition for developers is a good thing. Java forced Microsoft to develop .net and C# and those two things will light a fire under Java's ass for the next few years. |
| Fri 09 May | Daniel Shchyokin | Now if they made swing or awt a credible ui, that would be HUGE, this is lipstick on the pig that will stave of carpal tunnel syndrome for a few months |
| Fri 09 May | Andrew Murray | I'm just stoked about the addition of generics to the language. I think the lack of generics in java and c# (and thus built-in type safe collections) is one of the biggest problems with the two languages. |
| Fri 09 May | T. Norman | Except maybe for the generics and the <> syntax, I think these changes will *improve* readability, not make it worse.
Many sore eyes and fingers will be glad for the removal of the need to do explicit casting when retrieving from a Collection. |
| Fri 09 May | GiorgioG | Ethan wrote:
>Between Java 1.5 and the new Java IDE (IntelliJ Idea) that is even better than VS.NET, I think we are beginning the Golden Age of Java.
It may be your opinion that IntelliJ IDEA 3.0 is better than VS.NET - but I'm going to assume you haven't used VS.NET extensively ;-)
For all that microsoft does wrong (and the list is long), VS.NET 2002 & 2003 are by far the best IDEs I've ever had the pleasure of working with.
Yes, I've tried IDEA recently. It's definitely nice compared to all the other crap out there. With the exception of SlickEdit (which I've been using since v4.0) - the only problem with SlickEdit is that there's no integrated web app debugger.
Until I can concentrate on the 'software development' part of developing java web applications rather than modifying x configuration settings in the IDE to get it to play nice with the app server (debugger), deploy applications, set up connection pooling, etc. - I'm sticking with C# & ASP.NET. Anyone tried Websphere Studio App Dev. edition? It integrates a preconfigured Websphere App Server within the IDE. Great, if it didn't take up an insane amount of RAM and take a couple of minutes to load. And as an IDE, it pales in comparison.
So, yeah, Java/J2EE may be 'open' and 'cross-platform' and 'not microsoft' and blah blah, but until it just works without alot of extra b.s. steps, Microsoft will keep gaining ground. Wow, sorry to rant ;-) I'm not an evangelist of MS stuff, I just like tools that 'just work'. |
| Sat 10 May | Chris Nahr | 'Let’s give credit to MS: I think the emergence of C# and .NET was key in putting competitive pressure on the Java guys to be flexible on this issue.'
More to the point, is there any change in this list that wasn't copied straight from existing or planned C# features?
But I'm not complaining, after all C# cloned Java to begin with. ;-) |
| Sat 10 May | Walter Rumsby | Jeeze guys,
All these 'VS.NET > IDEA' people sound like the Eclipse people... i.e. JUST-PLAIN-WRONG.
Use IDEA properly THEN make your comments. I'd be surprised if you disagree with Martin Fowler, Jason Hunter.... and the ever growing list of IDEA advocates.
Yes, religious arguments are stoopid, but I actually have seen God... it's an IDE manufactured by a company called JetBrains. Sometimes goes by the name of IDEA. |
| Sat 10 May | Erik Lickerman | I suppose I have to say this every time someone says the opposite so to repeat- Swing is not only a 'credible' GUI it is a very good one. If you haven't used it in a few years, give it a try again. It's not quite as fast as native Windows but seems to me as fast or faster than, for example. GTK. Yes it isn't as easy for beginners to make fast responsive apps as, well I dunno whatever you are claiming is better, but for the experienced developer it is great- a real pleasure to code to. Give it a try again |
| Sat 10 May | GiorgioG | >All these 'VS.NET > IDEA' people sound like the Eclipse people... i.e. JUST-PLAIN-WRONG.
Please tell me what IDEA does other than add refactoring support that VS.NET does not do? (3rd party plugins for refactoring are available by the by.)
>Use IDEA properly THEN make your comments. I'd be surprised if you disagree with Martin Fowler, Jason Hunter.... and the ever growing list of IDEA advocates.
Use IDEA properly? What the f*ck does that mean?
http://www.intellij.com/idea/features/features.jsp
Outside of refactoring, which I've already mentioned, the only feature that I couldn't find any equivalent for in .NET was the built-in 'Local Version Control' which is only marginally useful.
>Yes, religious arguments are stoopid, but I actually have seen God... it's an IDE manufactured by a company called JetBrains. Sometimes goes by the name of IDEA.
You know, that's the least intelligent statement I've seen recently on here. Going to have to save that one.
I've used both IDEs (VS.NET & IDEA), and VS.NET is more responsive and better integrated with the environment (for obvious reasons) - IDEA is neither light-years behind or ahead of VS.NET. So lets please argue about something else, because we're comparing a ferrari to a lamborghini. It's unlikely that there's a noticeable difference. |
| Sat 10 May | Tj | I've never found it fair when someone says that only bad programmers make slow Swing apps. ;) Trying to argue makes you look bad.
Is it only about the mistake of putting too much in the event queue?
Someone should write a Swing app that is considered 'responsive.' It shouldn't need installation, so it should have a stripped JVM in a subdir. Then people can critique for themselves. |
| Sat 10 May | Michael Moser | from the article
>Autoboxing/unboxing - Eliminates the drudgery of manual
>conversion between primitive types (such as int) and
>wrapper types (such as Integer).
- even the terminology sounds like .net (boxing,unboxing)
- metadata facility looks like .net attributes
- Wow! Sun even added enum type. I am impressed.
Both platforms (java .net) are converging. i would call the result jnet.
Now what happens with J# after JDK 1.5 ? - Microsoft can't add generics to J# because they are stuck with the Java 1.1 syntax. (legal problems i guess). |
| Sat 10 May | Chris Nahr | 'Now what happens with J# after JDK 1.5 ?'
They no longer need it since C# will be mostly compatible with Java 1.5 anyway? ;-)
But J# isn't exactly the most vital language anyway. I think most people are still wondering why MS even bothered. |
| Sat 10 May | Shocked | > - even the terminology sounds like .net (boxing,unboxing)
My God, what an uneducated comment! |
| Sat 10 May | Michael Moser | >But J# isn't exactly the most vital language anyway. I
>think most people are still wondering why MS even
>bothered.
i think it had a point - give Java people a chance to try out .net, and leave them the option of switching back,
so that if you want to switch back to java then you don't have to rewrite your business logic again. |
| Sat 10 May | Gareth McCaughan | To expand on what 'Shocked' said: the terms 'boxing'
and 'unboxing' are way, way older than .NET; for instance,
they're used in the paper 'Performance of Lisp systems'
by Gabriel & Masinter published in 1982. 'Arithmetic is
complicated because Lisp passes pointers to Lisp numbers
and not machine format numbers. Conversion to and from
pointer representation is called boxing and unboxing,
respectively.' |
| Sun 11 May | Michael Moser | I stand corrected.
Lisp - the Mother of all Java's.
wait, did they have a class loader + class file format too ? |
| Sun 11 May | Erik Lickerman | TJ- I think it is a combination of things. The first is not having used swing recently. Swing now has access to your graphics card which speeds things up considerably. The second is not using threading when doing time consuming tasks. Swing does not handle this automatically and it is not trivial. There is a project called FoxTrot, which I haven't tried yet, which attempts to do this.
Another factor is assuming that using the base line components will be performance adequate. Example: The toolkit has an HTML component which is fine for simple tasks but if I were writing a Java based web browser (not sure what the point would be) I would probably spend most of my time writing my own HTML component. THis isn't so odd really. Opera, Mozilla, Konquerer- they all roll their own and optimize the crap out of them.
Another problem is comparing to native windows apps. They are always faster and make the Swing apps seem slow in comparison even though the 'sluggishness' of the swing app might not prevent you from doing your work in any way. I look at it kind of like getting better stereo equipment. If you blow $10000 on a stereo, after a week or so you will not enjoy it much more than your old $1000 stereo, but if you go back to it, it will sound like crap.
It seems to me that a well written Swing app runs on a new computer, about as fast as a well written native app on, say, a 3 year old computer. It seems to me that if Swing is inadequate to do your work, then a three year old computer is too.
BTW, my mother runs windows XP on a five year old computer and that seems really slow to me- the start menus takes a few seconds to open. |
| Sun 11 May | Evgeny Goldin | GiorgioG,
You say - 'http://www.intellij.com/idea/features/features.jsp'.
I'll tell you what. It's not a list of features that makes a difference - after all, if we take humans, for example - they all have the same list of features, but some of them you like and some you don't.
The same goes about IDEs, I think. I'm attached to IDEA on the emotional level - it does everything I ever need or want with a most elegant and simple way or shortcut. So far - there was nothing I wanted to do and didn't see some tooltip explaining me how. I just feel warm and comfortable working with IDEA, like with an old friend who always silently understand your needs (see, I'm getting emotional :).
JetBarins people must be crazy about usability and I give them 'best development tool in my life' for that.
May be you feel that way about SlickEdit (didn't like it) or VS.NET (never saw it) - but don't show me a list of features asking 'What X doing that Y can't do ?'. I don't care about Y or Z, I hust love working with IDEA. You may try it, you may not - forcing you to shouldn't be an issue. |
|
| Bad interviews | Fri 09 May | Bagpuss_2003 |
| The craziest telephone interview I had was a month ago with a small software/web design company in London.
One of their questions was the cost of finding the hardness of a batch of identical eggs as measured by the highest rung of a ladder one egg can be dropped from without breaking. The ladder has 1000 rungs.
I immediately said this was a binary search type problem and the cost was LOGARITHMIC. I said the 2 to the power of 10 is 1024. As 1024 is near to 1000, the cost is approxmiately 10.
When I was told this was incorrect, I stressed I said approximately and that the real answer will be slightly less than 10.
Well the telephone interviewer went on and on and despite me saying the cost was logarithmic and 2 to the power of 10 is 1024, we didnt get anywhere.
Finally the man said the answer was log n.
I almost hung up at that point. He obviously ignored my saying the cost was logarithmic and didnt know that
2 to the power of 10 = 1024
is another way of saying
log(2) 1024 = 10
I didnt get the job. This stresses the important point that if people ask technical questions they should at least understand them. These non-technical gatekeepers just keep programmers away from jobs. |
| Fri 09 May | Stephen Jones | Doesn't just happen in programming. In the mid 70's I had an interview for a teaching/translation job in Paris.
I was given about 100 sentences to translate into English. Round about the middle of the list was the sentence 'Elle est très forte'. The literal translation is 'She is very strong', but this was before the age of hormone-gobbling female weight lifters and would have sounded a lilttle strange. The phrase in fact is normally used in contexts such as 'Elle est très forte au piano' - 'She's a very good pianist' -- and I gave him that example and said that out of context it would be impossible to translate it.
However he had clearly been given an approved translation from a fan of sub-Woosterian girls public school literature, and regretfully informed me that I had failed the test as the correct translation was 'She's very bully.'! |
| Fri 09 May | Spaghetti Rustler | Nowadays everyone has a C++ test they want to administer. Invariably, the test is written by someone with a year or two of experience in the language, and it shows. In the past, I would grit my teeth, dutifully fill them out, and hope for the best.
Lately, though, I've decided to seize control of this part of the interview. First, I smile broadly and say, 'Hey, let's do this together!' Then, we go through each question, and I explain why the answer they want is incorrect, incomplete, or debateable. If none of those apply, then I ask a related, but harder, question, like, 'Yeah, but guess what the ARM says about forward declarations and destructors?'
I get away with this by (a) smiling a lot, (b) approaching it as a 'fun' experience for all involved, and (c) never directly criticizing their questions. The results have been much better.
If you're in a bad interview, you have to do what it takes to make it a good interview. |
| Fri 09 May | | >> 'log(2) 1024 = 10'
Not on my calculator. Then again I flunked the 1st grade. |
| Fri 09 May | Bagpuss_2003 | On most calculators you have base 10 and base e (approx 2.71) log functions. They have the keys log and ln respectively. For this you need logs with base 2.
This is a formula somewhere to convert a log of one base into another but it's been too long since I did a A level maths. |
| Fri 09 May | Thomas Eyde | On MS Calc in sci mode: log(1024)/log(2)=10 |
| Sat 10 May | Emo | Hmm... also if by 'cost' one understands the cost of an egg, then you can do in with only one egg starting to drop it from the lowest step of the ladder.
And, of course, given the stress caused to the egg does not accumulate :) |
| Sat 10 May | Bagpuss_2003 | But with a 1000 rungs it could take you some time to find the right rung. |
| Sat 10 May | raindog | Here's a slightly more complex version of this problem:
Your task is the same, but you have only 2 eggs.
What's the optimal strategy and how many drops will it take in this case?
Hint: you can do better than 500 or 100 or even 50 attmepts! |
| Sun 11 May | Alyosha` | Method 1: wait for egg 1 (male) and egg 2 (female) to hatch. Breed resulting chickens. In time, you will have enough eggs to complete this task
Method 2:
for (i = 32; i < 1000; i += 32) // 32 = sqrt(1024)
if (breaksWhenDropped(i))
for (j = i - 32; ; j++)
if (breaksWhenDropped(j)) return j;
This requires around 64 drops, worst-case. I donno how to get it under 50. |
| Sun 11 May | Alyosha` | Actually, I am not sure why one would need to breed resulting chickens. All that is required is one chicken to be female. |
| Sun 11 May | Brad Wilson (dotnetguy.techieswithcats.com) | Yeah, I've heard the problem before, and you need to state it explicitly:
'You have 2 crystal orbs of exactly the same strength and a 100 floor building. You need to find the exact lowest floor at which the orbs will break (you must be exactly right, not close). Minimize the worst case scenario for the number of attempts at dropping the orbs.'
The typical first answer is a binary search, but the worst case scenario for a binary search is 50 (you start at floor 50, and the first orb breaks, so you must start at 1, and if the orbs don't break until 49, you took 50 attempts).
The right answer comes from the knowledge that every successive drop of the first orb adds attempts, so each drop of the first orb must mean less attempts with the second orb. The first orb attempts are made at floor 14, then you move up 13 floors to 27, then up 12 floors to 39, etc. The worst case scenario, then, is 14 drops, because each successive drop of the first orb yields one less drop required by the second orb. (14 then 1-13 for 14 drops; or 14, 27, then 15-26 for 14 drops; 14, 27, 39, then 28-38 for 14 drops; etc.). |
| Sun 11 May | Brad Wilson (dotnetguy.techieswithcats.com) | Oh, and unless my fingers messed with me, the worst case scenario with the same algorith for 1000 floors/rungs is 45 attempts.
using System;
public class MathFun
{
public static void Main()
{
int result = 0;
int idx = 0;
while (result < 1000)
result += ++idx;
Console.WriteLine('{0} iterations required', idx);
}
} |
| Sun 11 May | Stephen Jones | Dear Brad,
Are you sponsored by The National Poultry Producers Federation?
The answer as originally stated is 10. It's logarithmic base 2. You start at 500. If it breaks you can forget about the rungs on top after 500. If it doesn't break you can forget about the ones below. You then go to rung 250 or 750, depending on whether it broke or not, and keep doing it unitl you're down to one rung.
The other advantage of this method is that you lose a load of weight running up and down the ladder. (And you can program it in Visual Basic with nested ifs so you've got spaghetti to go with the omelette!). |
| Sun 11 May | Brad Wilson (dotnetguy.techieswithcats.com) | I was answering the SECOND version, not the original. So, uh, did you just read the first version, skip over everything else, and then come down here to call me an idiot?
Here's a mirror. :-D |
| Sun 11 May | raindog | Brad, your solution is exactly right. One needs 45 attempts.
P.S. There's no need to iterate, if you rember the formula for arithmetic series sum:
N x (N+1)/2 >= 1000
and N = 45 |
|
| Monkeys at the keyboard | Fri 09 May | old-timer |
| I liked this little story over on Fox News.
http://www.foxnews.com/story/0,2933,86454,00.html
Isnt it, after all, pretty much the same thing we do? Start by bashing it with a rock. Deficate all over it and eventually discover that things appear on the screen if you type the keys. How much different is this from a developers life? |
| Fri 09 May | Christopher Wells | Very different, because we learn from people who have already passed those first few stages. |
| Fri 09 May | Nat Ersoz | Hillarious! |
| Fri 09 May | Prakash S | Now there's an idea for Dell to sell more computers, hire monkeys:-) |
| Fri 09 May | njkayaker | Sounds like the users I deal with. |
| Fri 09 May | Bored Bystander | Idea: show a few of the brigher monkeys how to access newsgroups. Give them a newsreader client and tell them to participate on alt.computer.consultants.
This would elevate the feces flung on that newsgroup to an entirely new level and would likely boost the average level of discourse... |
| Fri 09 May | Thomas Eyde | I think it's rude to compare consultants to monkeys. To the monkeys.
Ex-monkey. And you wouldn't belive what the chief monkeys were capable of... |
| Fri 09 May | Matt Christensen | I'm intrigued by how six monkeys are presented as an appropriate simulation of an infinite number of monkeys. Guess people really can't count anymore. |
| Sat 10 May | Joe AA. |
Wow.... maybe we could 'insource' again!!! |
| Sat 10 May | bubba | An infinite number of monkey might just cover the keyboard in several feet of monkey dung before most of the others had a go at it. |
| Sun 11 May | Nat Ersoz | I think they landed a new grant to record the sound of one hand clapping. |
|
| Resume writing services. | Fri 09 May | Prakash S |
| Do you guys know any good resume writing services. This is for a friend who wants a resume and a CV written.
Thanks, |
| Fri 09 May | Matt H. |
The experience of writing and revising his own resume would be good for him.
I'm sure there's a google-ish way to look at other people's resumes for ideas. Pick what he likes, and go forward from there.
When I was in college, the computer lab had a big, spiral bound book in it. When you were about to graduate, you could leaf through 100 or so resumes for ideas. When you graduated, you put your resume in the book. :-)
It's been my experience that a lot of the people who you pay to 'help you find a job' are far more interesting in collecting fees than in getting you a job ... |
| Fri 09 May | www.marktaw.com | Search for your target job.
Copy phrases from the job descriptions.
Copy phrases from other resumes.
Nobody writes as good swag as the people who write job descriptions. Tons of buzz words and other things nobody uses in real life. Very professional looking. |
| Fri 09 May | J. D. Trollinger | Doesn't matter what he writes in his résumé. He should concentrate on getting a job through networking (i.e., asking for job tips from friends, fraternity brothers, long-lost cousins, next-door-neighbors, etc.). |
| Sun 11 May | Prakash S | Thanks Guys, yeah he is already sending out his resume to friends, and doing the networking thing. |
|
| What should a cover letter say? | Fri 09 May | Pinky and the Brain |
| I am trying to write a good cover letter for my resume, but dont know exactly what to say? I would like to ask those folks that actually read these things to give me their take on what I should and should put in a cover letter.
A normal cover letter of mine goes something like...
Dear SoandSo
As noted on my resume I have experience doing this and that and I graduated from such and such a college... blah.
Thanks for your time etc etc
Sincerely,
Soand So
( Please dont post links to sites with example cover letter. I want the opinions of those that actually read them and what do they look for if anything. You do read cover letters right? ) |
| Fri 09 May | JJ | Lol. Pinky and the Brain. That was a good toon. Pinky says, 'What are we going to do tonight Brain?.' The Brain says, 'We are going to do what we do every night, Pinky. Try and take over the world!'
No, seriously I would use the cover letter to convey some important points of information such as where you heard about the job, a summary of your experience, maybe a link to your website if you have one. Really I don't think cover letters are all 'that'. Now if you write one that is totally misspelled and has poor grammar then you can prolly kiss the job good-bye. |
| Fri 09 May | RocketJeff | When I read cover letters, I'm speciffically looking for the fact that you know what position you're looking at and how (specifically) you think your background matches what we need.
Besides helping me understand how you might fit, it also weeds out the people sending their resume to every company they can find. |
| Fri 09 May | www.marktaw.com | I agree with RocketJeff.
'I would be perfect for this position because I'm a brown-nosing yes-man and have been one all my life.' |
| Fri 09 May | Brent P. Newhall | Seriously, the resume is a general document that's sent to everyone. The cover letter is written for a particular position, and describes why you're the perfect match for the position.
Think of it as an advertisement for yourself. Don't go overboard with marketing jargon, obviously.
Pretend that you're recommending your best friend for this job. Write the letter that way. Explain why you'd be great for the job, what qualities and experience you have that fit the job, and be enthusiastic. |
| Fri 09 May | Philo | Uh.... Rocket and Mark - what, exactly, is wrong with sending a resume to a company that doesn't have an open job listing?
I'm curious - when you need to hire someone do you check your resume bank first? Or do you put up a listing and only review resumes in response to that listing?
Philo |
| Fri 09 May | Bah humbug | The cover letter is the only part of a resume I will read, unless I am expecting the resume from someone I have already met.
I will only go on to read the main resume if the cover letter grabs my attention.
Ways to grab my attention: prove to me that you know what my company does, and explain what you think you can do for my company. Too many resumes are completely generic. A generic cover letter / resume means that you stay completely generic in my mind... |
| Fri 09 May | Chris | When I read cover letters, I want to know what you will do for ME.
So do some research about the position and tell me in your letter how you will fill the job requirements and EXCEED them. Something like... 'My past experience has taught me to do and I would like to implement that will cut development time in HALF and generate $10,000 a year more in revenue.'
Your resume will explain what you are capable of while your cover letter should convey how you are better than the competition and how you have innovative ideas to better the company's efficiency and profits. |
| Fri 09 May | RocketJeff | 'what, exactly, is wrong with sending a resume to a company that doesn't have an open job listing? '
Nothing's wrong - but if you're mass mailing a hundred companies with your resume (and identical cover), there is something wrong.
If the company doesn't have an advertised opening you should be explaining how your experiece would be valuable to the company and show some understanding of what the company is doing.
I don't know why you'd apply to a company if you don't know enough about what technology they're using to make a customized cover letter. |
| Fri 09 May | www.marktaw.com | Philo - nothing. If you don't know what the job is, don't talk about it.
The Resume and the Cover Letter are advertising tools. If they get you the interview then you can make an 'in-store' sales pitch. |
| Fri 09 May | Harvey Motulsky | We don't hire all that often, but I am impressed by a good cover letter directed specifically to me or our company. If an applicant doesn't bother to take the time and trouble to organize and write a really good letter explaining why they want to work for us, then I figure that person also won't take the time and trouble to do other jobs well. |
| Fri 09 May | Philo | Wow, you guys have opened my eyes.
In the legal world, the concept is 'a cover letter will never get you the interview, but it can lose you the interview.' Apparently if the IT world is run like those who have posted here, then it's up to the cover letter to get you the interview as well.
To be honest, I don't really understand the reasoning - I would think that in order to find the best possible person for your company, you would want to maximize the number of resumes you read, and screening based on 'oh, this is a generic cover letter, screw him' seems a bit arbitrary to me, especially considering the current job market.
Now maybe a generic cover letter means the applicant's resume only gets a cursory glance, but I'd still give it that glance to see if maybe it's someone you really need.
And yes, I'm annoyed because I've always used a generic cover letter - just one introductory paragraph saying who I am and what I do. I've always figured people reading it were more interested in the actual meat of the product instead of the advertising fluff. Thanks for showing me that I was wrong and Microsoft was right. ;-)
Philo |
| Fri 09 May | Stephen Jones | You must tailor the cover letter to each particular job; if you haven't time to do that don't bother sending one, you will only make things worse.
You want to put on the letter why you want that particular job, and why you're looking to move to it from the one you've got. |
| Fri 09 May | Philo | [sigh] Ah well - so IT starts to become a 'mature' industry.
I'm assuming I should also send it snail mail, either typed or laser-printed on 24# cotton bond paper?
Is there a recommended style guide for IT resumes I should get as well?
Philo |
| Fri 09 May | RocketJeff | If you're not willing to invest a bit of time to tell me why I should look at your resume, why should I bother to invest the time? Especially in this market where each job posting gets at least 200 resumes submitted. |
| Fri 09 May | Philo | Cover Letter = FUD
Resume = Features
I don't waste time on cover letters because I think they're worthless. To me it's about trying to get my abilities in front of your eyes. I know what I can do, you know what talent you may be looking for. Resumes are about matching those two together.
Honestly, you put more weight in 'I see your company does Java development. I've been working in Java for five years and delivered several Java applications' than in the part of his resume that indicates specifically what he's done in Java?
How about if you're looking for someone for a new venture that's not public knowledge? How do cover letters help you there?
I sincerely suggest you are being short-sighted and putting too much weight on cover letters. I also see some desire for ego-stroking: 'I want to know that you care about *me*'
Philo |
| Fri 09 May | Jamie |
You could try something like that :
I've designed the Java Language
James Gosling |
| Fri 09 May | www.marktaw.com | Philo - Your statement about maximizing the search by viewing as many resume's as possible assumes that you're not already getting a ton of resume's.
If I were hiring, I would consider the whole package. I'd reduce my pain as much as possible by eliminating as many people as possible so I don't have to actually interview dozens of people.
If their cover letter shows signs of being amateurish, too eager, gramatically poor (unless they're foreign), then they're easy to eliminate.
Cover letters are probably weighed along with the resume. What weight you give to each is a different story. |
| Fri 09 May | www.marktaw.com | Got this in my mailbox form Careerbuilder.com:
Experts say never send a resume without a cover letter.
66% of Hiring Managers Prefer an Appropriate, Well-Written Cover Letter With a Resume*. Don't get over-looked, use these cover letter tips to stand out against the rest and start searching and applying.
Cover Letter Tips:
1. When at all possible, address the letter to a particular person. Do some research if necessary to find out the name of the person who will be reviewing your resume. This reinforces that this is not a generic cover letter, but one made especially for them.
2. Be sure to modify the cover letter to the particular job you are applying for and illustrate to them why you are the best choice for this particular position. Hiring Managers look for specialized cover letters, not mass produced ones.
3. Do research on the company you are applying for. Discuss why this company/organization appeals to you. This shows employers you went the extra mile to learn about them - it may give you the edge over the competition.
4. Don't just repeat your resume and keep to one page. This is a chance to not only illustrate your outstanding qualities, but to show your personality as well. Employers should want to meet you, not just your credentials.
5. Double and triple check for spelling or grammatical errors. 48% of hiring managers say they will not even consider a resume or cover letter with spelling errors*.
* Statistics provided by CareerBuilder.com Hiring Manager Survey |
| Fri 09 May | Martha | Considering our HR person's English skills (or rather, lack thereof), I don't think our company discriminates on the basis of cover letter writing quality.
Said HR person is quite white-bread American, no worse and no better than the average middle manager out there. I think the 'you better get the grammar correct or else' horror stories are just that: stories. Of course, it never hurts to err on the side of caution. |
| Fri 09 May | . | The person reading your letter has lots of things to do. So the first thing your letter has to do is tell him why you're contacting him. In other words, what position you're applying for.
He could be hiring five different people and it's just more convenient for him if you say which position you're contacting him about.
After that, the person needs to see three or four reasons why you would be useful for that job or are interesting to talk to.
For example, 1,2,3 as to relevant achievments in other jobs or relevant learning. Don't make this a laundry list of every sibject you ever did. |
| Sat 10 May | not planning a job search anytime soon | 'When at all possible, address the letter to a particular person. Do some research if necessary to find out the name of the person who will be reviewing your resume. '
I've seen this tip before, and my research skills have always come up a little short in this department. Do you just call the company and hope the person answering the phone can tell you or transfer you to somebody who knows? |
| Sat 10 May | Stephen Jones | Obviously you must put on the cover letter the exact details of the job you are applying for and where you saw it advertised.
A subject line in bold and underliined is a good idea.
You should always do this even if you put nothing else on the cover letter.
The advantage of the cover letter is that it allows you to have a standard resume.
But if you get the time you should consider tailoring the resume to the job as well. Simply putting the relevant bits of the alphabet soup in bold is a help. If you've worked on lots of projects you can choose which ones to describe in more detail. |
| Sat 10 May | Philo | Okay, Philo takes the point that 'do not act as you wish the world was; act as the world is' and will start tailoring his cover letters.
For those of you that review resumes, I offer these thoughts:
First and foremost, I would recommend you review them as one of my favorite managers did - he had them delivered to him with the letters flipped to the back, so the first thing he saw was the resume. After he winnowed based on the resumes, then he might read the cover letters for obvious disqualifiers (grammar, spelling, attitude). For those of you without secretaries, open the envelope and immediately flip to the resume.
You complain that you don't have time to read every resume. Then why are you wasting time with cover letters? You're effectively looking for a critical piece of software your company needs based on who has the prettiest box. Shouldn't you be more interested in what is inside the box?
'Cover letters should be targeted to the job.' Why? What organization on the face of this earth only has one job open? The person reading the resume may not have even advertised the position you're a fit for. Maybe his boss just said 'hey, we really need to get started on that .Net project' and the next resume he reads is 'Philo, etc - .Net Architect'. If my cover letter was targeted to an open Oracle DBA position, he'd flip right past it.
'I want to see that you've done some research and care about my company.' Yeah. You want to be wooed. Gotcha. Remember five years ago when good coders wanted to be taken to dinner at Morton's or Ruth's Chris before they'd even consider your job offer? Remember what we all thought of those arrogant jerks? You're acting the same way - you want some ego-stroking that I like you; I really, really like you.
You are not my employer. You are a potential job opportunity. My goal in sending you my resume is not to say 'oh please, Mr. Employer, give me a job, I'll do ANYTHING' - it's to make you aware that my services are available. When you list a job on Monster, should I turn my nose up at you because you haven't bothered to learn anything about me? Of course not - you're advertising. My resume is the same thing.
There are a thousand jobs out there and frankly I don't have any more time to research every single company than you do to read a five-page cover letter for every applicant. I skim and shotgun, hoping to make a good match. I look at the jobs you list and your website if I can. If it looks like a decent chance you'll have solid work for me, I'll send you my resume - now the ball is in your court to decide if *I* am what *you* are looking for.
And let's cut to the chase - you want a targeted cover letter based on what you do. And where do I learn that? From your website? The website that was likely invented by your marketing team and is 3/4 lies? So you want me to create a fluff cover sheet based on your fluff website AND YOU'RE USING THAT TO SCREEN EMPLOYEES? Especially when all you have to do is flip one page and there's the meat of what you're really after - skills and experience.
I would think if we were all true professionals I could send you a resume with no cover letter at all and it would accomplish the task, but even I realize that's a little too optimistic.
Ah well. At least I like wearing a coat and tie.
Philo |
| Sat 10 May | MaisOui | As a company that has pretty specific instructions about how to submit a resume, I thought I'd throw in my two becoming-more-valuable Canadian cents.
I'm sure Philo would hate the way we screen employees
(For reference, the short version:
To submit a resumé, send us an email with the following characteristics [omitted].
Following this will get the applicant past our email filter such that a real person will read the cover letter.
Interestingly enough, 90% of those who send us resumes fail this simple filter. I'm pretty comfortable with this criteria, since we have no positions that don't require attention to detail as the #1 most important skill/character trait.
To get someone to read the resume, the cover letter has to generate at least two points. We guarantee to add the contents and contact of the resume on file if the cover letter + resume generates at least four points.
Our Point System:
1 point Applicant mentions our company name
1 point Applicant has an idea of what they might do for our company.
2 points Applicant has an idea of what our company does.
3 points Applicant has relevant experience. )
We implemented the above approach because we were being buried in resumes, phone calls and even a guy who just showed up and demanded an interview. This for a company that has never posted a single job. Being on the smaller company side, we've also never yet had an open position for which we didn't already have half a dozen qualified candidates in mind. Yet we've had more than one random stranger beg to come and work for us 'on free trial'.
Given that there seem to be a huge number of people looking for employment at the moment (although I optimistically think that things are getting better), and given that said people seem to think the best way of getting a job is to send a massive email/fax/mail broadcast out to every single company in the entire city that might be vaguely relevant, reading every resume is not an option.
Now, imagine that you are applying to a larger company that actually advertised positions. Think of the volume of noise your signal is being choked with! It might not be fair that you get filtered out, but that's the way the cookie crumbles. Rather than whine about how this isn't the way it should be, it would make more sense to figure out how not to get filtered, and do something about it...
If you want my personal opinion, I think there is a tendency for job seekers to want the process to be a bit too easy. Since job seekers can now send spam to employers, they don't bother to maintain old fashioned networks and then wonder why no one wants to read their resume. (I'm reminded of the donkey in Shrek- 'pick me, pick me, ooh pick me') Getting a job is hard, from both sides of the fence.
Furthermore, a resume is simply a laundry list of what you can do and what you have done. Many people take their laundry list straight out of a book. I agree that many corporate websites can be largely fiction (but honestly, researching a company is not just visiting their website. I'd do a Google search, ask about them from my work network, call and talk to a sales person or front line support, search the local newspaper, check with my local employment office etc etc). Unfortunately, that just means that you have to do a little more leg work. (Anyone who ever promised you that life would be easy was either lying or trying to scam you)
Resumes are also often largely fiction. Sure, they might list . Many of those listings mean 'I've read about it online once'. A cover letter on the other hand gives you more insight into the actual applicant. It's the advertisement for the resume. The text that convinces me that I should spend the time to find out more about you. The text that tells me what things you've done recently, that you are most proud of and that you consider most relevant to me.
Philo complains that this sounds like sucking up. It seems to me that all initial relationship forming (of any sort) boils down to sucking up. If you meet someone for the first time and you spend the entire time talking about you - that's generally considered a social faux-pas. In my culture anyway, it's more well-mannered to find out about the other person so you can converse intelligently with them. You look for common ground, and then you talk about the things you have in common. You attempt to impress, amuse, whatever etc.
That, in my opinion, is the purpose of a cover letter. It's Phase One of forming a relationship with your (hopefully) new employer. |
| Sun 11 May | | Dear Mr Gosling, I'm sorry but the client specifically wants JDK 1.5 experience. What version of Java was it you designed?
One up to 1.3, I see, well, I know this client and they're very specific. You don't even have any Sun certification. |
| Sun 11 May | Philo | In our culture, researching a person's background before saying hello is called 'stalking' [grin]
I'm still foggy on why you think reading a page of text is easier than skimming a well-written resume. (and please note that I'm not against trashing or tabling resumes that are not well-written)
Regarding the comment 'I think job seekers want the process to be a bit too easy' - pot, kettle, black. Apparently YOU want the process to be a bit too easy - you're looking for automatic screeners to reduce your workload. Maybe you can toss all resumes that are in the wrong font, too?
I maintain that you are looking for ego-stroking. You want to believe that this resume is on your desk because the applicant just *has* to work for your company, instead of the idea that the applicant is looking to write code for money in a comfortable professional setting.
Why is that latter concept so very abhorrent to employers?
I just did some job searching doing the research thing. Honestly, I'm not sure how it's different for me to apply to:
a company looking for a .Net architect
or
a company selling COTS data mining software with a company whose personnel are known for creating data-marts with hundreds of millions of rows, yadda, yadda, yadda.
What matters to me are the people, the management, the work atmosphere, and the tech on the desktop. That doesn't come from a website or job listing, because oddly, I've never seen a company website that said 'our company delights in death marches and micromanagement. We hold the prize for most Dilberts posted on cubicle walls, and our turnover rate would power Las Vegas. We consider it a mark of honor that our developers still have fifteen inch monitors and Pentium 2 desktops'
To: Man who wants to turn money into code.
From: Rumpelstilskin
Look, here's what I do, here's what I've done. Is this what you're looking for? Call me. Do you have a stick up your ass about the format of my cover letter? Best you keep looking, because we'll kill each other within a few weeks.
Kiss kiss,
Philo |
| Sun 11 May | Tj | Philo, this is what I think about the whole process -- it's to touch the applicant as much as possible. By asking questions, you expose a greater surface area and maybe weird angles. And as an applicant, it might be best to expose as many angles as possible.
Now, I think you're optimized for different things than I am. You're more like a shark, automating things and not being much concerned about not-great working conditions. Therefore there are certain things you don't care about proving about yourself, as you don't care about them doing certain things either.
About sucking up, I'm never willing to do that. An interview for me is a dialogue where we try to figure out if it makes business sense to work together. But I do like companies that come right out and ask you to jump through simple hoops, because others have invisible ones anyway.
Plus, we're a warlike species, and one of the hardest things to do is work all day next to some random fucker off the street. ;) |
| Sun 11 May | Bevan McCabe | I'm not sure I agree with this 'research the company thoroughly and then fire off a cover letter' theory.
I'm just worried that if you spend a lot of time researching a particular job that's time that could have been spent applying for loads of jobs lost because you've concentrated on just one.
Sure, if it's a dream job that you really want, then maybe. But in many situations here agencies are used and you can't find anything out about the company they are representing which makes it a moot point.
For example, I'm looking for work as a technical author, and there are very few positions. So I'm also looking for other things that I have some experience with, such as Trainer, VB programmer, Tester/QA and Technical support. Besides this, I'm looking at positions not directly IT-related as the IT job market here in the UK seems so flat.
I agree with that point about applying for jobs/firing off resumes via email. It can be effectively like spamming; I worry that my resume is not being read. Maybe it is better to send letters via snail mail as they have more likelihood of being read?
On the other hand, letters will take much longer than email, so you miss out if they want to make a quick decision. So it's hard to know which is best.
I'm not sure how much I subscribe to the networking idea; sure if you're a contractor then it's justified. But if you're looking for permanent employment then constantly networking is maybe not worth the effort? |
| Sun 11 May | Stephen Jones | Dear Philo,
May I suggest the following for the text of your cover letter. 'Intransigent prima-donna, who can't be bothered to tell you what particular opening he is applying for, would like a job with in a pleasant environment catering to his every need; if you are rushing over yourself to hire him please read through his five page resume to see if any of it actually fits the job you are advertising.
You don't seem to understand that when there is a surplus of applicants life is, if anything, harder for HR because they have to sift through so many more resumes. Your resume will be screened by one of two people. The HR/Secretary type person who won't have much idea about the alphabet soup that is your resume and who will jump at the cover letter that shows him/her where to look, or the professional developer who knows about the stuff but hasn't the time to read the resumes carefully because his job, and what he wants to do, is to write code.
Alternatively you could simply give up on applying for a coding job and ask for a job screening five page resumes with no cover letter, since you think it's no great shakes. After all, doing anything more productive with your time would be 'ego-stroking' wouldn't it? |
| Sun 11 May | Stephen Jones | Dear Bevan,
Forget snail mail. It will quite lilkely get lost before it even reaches the guy it's supposed to. And there are plenty like me who hate applications by snail mail or fac because they can't be filed on computer. I have a database of job applicants, relative links to a folder with all attachments, and every single email kept in one huge Outlook folder so I can access the whole conversation. Paper jsut doesn't fit in.
This 'research the company' is often taken too far. You do need to do a little before the interview, but for the purpose of applying for the job, you just need to do enough to find out how to word your cover letter and what parts of your resume to stress. Is it a large company or a small company, is it in the software business or not, what exactly is the opening for. If you are applying to a small shop that produces custom applications for SME's then you will want to stress wider design and people skills than you would for a huge consultancy specializing in data mining or banking applications. |
| Sun 11 May | www.marktaw.com | My sister tells this story of when her car broke down upstate. Someone in the same car came up to her and offered to help. His exact words were:
'Red Jeep? Red Jeep!' pointing at her car and then his car in turn.
I think that when you 'Research the company' you should be looking for obvious points of compatability. Then your cover letter should explain why you're the right person for the job.
As much as your Resume should speak for itself, a cover letter doesn't hurt. It's kind of like a restaurant where the food speaks for itself, but they still hang their framed Zagats review on the wall. |
| Sun 11 May | Philo | Stephen - that's exactly why my resume never exceeds two pages, and has a bulleted list of my primary skillset at the top. That's also why I'm still puzzled that those who review resumes would rather read a full page of prose than simply skim my resume - a ten-second glance will tell you whether or not I'm worth further reading.
You're getting closer to the issue, but still missing the point - this is about companies that want to turn money into code, the professionals who are able to do so, and the market in between. To maximize return on the $'s involved, you want an *efficient* market, and that means maximum return for effort expended.
So you want me to spend as little time as possible submitting resumes to companies, and you want the companies reviewing resumes to spend as little time as possible reviewing those resumes. Both sides of that equation argue AGAINST cover letters at all, and argue for a relatively standard resume along the lines of what I consider the 'standard IT resume' - info at the top, then education, then a bulleted list of skills, then a list of job experience, relevant first. No more than one page if you're junior-mid, no more than two pages for anyone else.
For an efficient marketplace you want both sides using Monster, ComputerJobs and the like, and you want me firing off resumes, while you want your HR dept skimming the bulleted lists for a match. If you don't have an HR department, you want to be personally skimming the bulleted lists of skills.
And by the way, if I get called for an interview, THAT is when I do my research on the company.
Philo |
| Sun 11 May | Stephen Jones | There is no such thing as a 'standard IT resume' any more than there is a 'standard IT job' or a 'standard IT catch-all application'.
If you don't specify on the cover letter exactly which job you applied for and where you saw it advertised, the odds are that your resume won't even reach the person who is supposed to be reading it.
Nobody is asking you to send a full page cover letter but apart from what I mentioned above you do need to outline the part of your resume that is most applicable to the job in question. This allows you to send the normal resume without having to do too much tailorization.
Your 'skim the bulleted list of skills' is asking for the mindless acronym matching that most people here complain about.
They want somebody to develop a MS SQL Server app using Access as a front end, and your relevant experience was developing a Posgre cygwin app using VB6. Unless you point out in the cover letter tnat 95% of SQL is an ASCII standard, and that Access uses VBA which is to all intents and purposes the same as VB6 the HR secretary is quite likely to leave your CV out. If you are applying for a job doing an educational app for a school district then you will want to stress your experience in the requirements gathering stage for your last project. Apply for the data mining job and you want to stress your implementation and technical skills.
And think of this; if you can't write a brief introduction to HR's requirements how are you ever going to be able to write software to a user's requirements. |
| Sun 11 May | Philo | Okay, perhaps this will help make my point clearer.
My resume (slightly munged, and forgive the HTML - it's a pull from a Word .doc):
http://www.saintchad.org/philo.htm
A cover letter I just threw together:
http://www.saintchad.org/cover.htm
Now I would honestly appreciate someone from the pro-cover letter camp explaining to me how it's easier to read through a hundred of the latter than to skim a hundred of the former.
If I spend the 1-2 hours it would take to craft that kind of cover letter for each job, I'd only be able to apply to 5-10% of the jobs I do now. So do some critical thinking:
1) Fewer resumes for you means you have a smaller talent pool to choose from (bad)
2) Those of us who are dedicated enough to put in creditable effort will be the ones you're getting fewer of. So you still get the scriptkiddie spammers, you just miss out on more professional coders. Is that a result you wish to encourage?
Food for thought,
Philo |
| Sun 11 May | Philo | Stephen, if your HR department is that good, double their pay tomorrow.
And I don't know about others, but even though I honestly believe I could pick up Java in nothing flat, I don't apply for Java jobs, period. So I don't have a need to explain why my background doesn't match the job I'm applying for.
Specify the job I'm applying for? That's what a subject line is for. :)
And I'm not saying I can't write a cover letter. I'm saying that when I'm looking at a hundred potential jobs, then I do not have TIME to write a hundred targeted researched cover letters when I only need the one job. :-)
Philo |
| Sun 11 May | Stephen Jones | Dear Philo,
If you want to write a cover letter just to take the fun out of people who are trying to advise you best of luck.
You asked people who spend their time reading CV's to tell you what they look for and we have. If you don't want to take our advice but prefer to call us ego-strokers, fair enough.
Your resume has loads of faults of presentation, but it's well past my bedtime so if you want a full description of what's wrong with it you'll have to wait until tomorrow. |
| Sun 11 May | Stephen Jones | Dear Philo,
You might only want one job but you are not going to get it by sending off that resume a hundred times.
Are you applying for a job like the last one setting up a legal process system. If not what the hell is your doctorate in law doing on the top of your CV? In fact as neither of your degrees are IT orientated stick them further down the CV.
You're applying for a job that requires security clearance? If not why on earth do we have your full military record? As far as I can tell nothing prior to 1995 is relevant to your employment in IT so don't give details.
Even the order of the skills needs changing according to the job. Applying for a DBA job? Then put that skill first and put all sys admin work you have done at the top of the job descriptions. Applying for a programmers job - different again.
Employers like to see a pattern in your life, so put on the cover letter a short prose description saying that you originally got a degree in electical engineering but that in the navy you got involved in designing and running databases and applications and this fascinated you and so you decided to follow this up when you returned to civilian life.
Let me tell you something else. People miss the most obvious things in CV's. So you say the most important things two or three times over in the hope that one of the three will get home. |
| Sun 11 May | Philo | This has gotten far more adversarial than I intended.
My *intent* was to simply debate the 'directed, researched cover letter' crowd on the best way of screening for job candidates, and to point out that time is money on BOTH sides of the equation, and I believe it's in everyone's best interests to make the entire relationship as efficient as possible.
My cover letter was not meant to make fun of anyone. While it's not what I would actually send, I think it's close enough to the mark to make the point that reading and comprehending prose takes longer than skimming a well-written resume for content. Mr. Bigbootey can read through the page to see how I present my skills, or he can skim the resume and think 'Hmmm... working .Net experience, working Oracle experience, and a military officer - probably worth talking to this guy'
Of course, if he's working through HR it would be 'find me someone with .Net, SQL Server, and Oracle experience'
I'll be happy to hear feedback on my resume, thanks!
Philo |
| Sun 11 May | Stephen Jones | ---'Stephen, if your HR department is that good, double their pay tomorrow. '----
No, they probably won't know anything about VBA or ASCII SQl. You could have told them that programming TEOFL in Kanji script was the same thing and they still would have accepted your application. It will be the technical guy who will weed the BS out.
But if you don't tell HR your qualifications are the same as what they are looking for your CV will never get to the tech guy. |
| Sun 11 May | Philo | Okay, Stephen, you win - you DO need cover letters. I had no idea an employer could need such hand-holding.
'Neither of your degrees are IT oriented'
I have seen two specific degrees ever listed as a prerequisite for an IT job: BSCS and BSEE. I've got a BSEE. What do you think *drives* computers, anyway?
And since the BSEE is at the top (since it's often a major screening factor) then the law degree goes in the education section as well. It's one line, and I think it makes me stand out from the crowd. :)
'Nothing prior to 1995 is relevant to your employment in IT so don't give details' - uh, if you're looking for a team lead you don't think listing leadership details is important? How about someone who is used to making decisions on their own?
Again, my point is that when I apply to a company, I'm not necessarily applying for 'a' job - I'm offering my services in any fashion they may need them. I can think of several interviews and one job that were not related to the reason I submitted the resume.
Philo |
| Sun 11 May | Stephen Jones | Dear Philo,
The cover letter is atrociously written and the fact that you say 'threw it together' shows your opinion of it. And what is a NewIT company doing with both SQL server and Oracle. One for the even days of the week and one for the odd? You don't 'throw cover letters' together, you think very, very carefully about them.
If your cover letter was well written it would be easier to read than the resume alone. Just get rid of the buzz words and brown nosing. You have two basic points to make. You have four years experience in designing and implementing MS database solutions, eight years software experience and inter-personal skills learnt in the Navy. Say that and be done with it. Also you must state your present position and why you want to leave and when you will be able to start. |
| Sun 11 May | Stephen Jones | Dear Philo,
As far as designing a database goes I don't honestly care it's a water wheel that drives a computer. But I do see your point in putting the Electical Engineering degree in. So keep it - and leave out the juris doctorate altogether. You're looking for employers impressed by military service - they hate lawyers. And people impressed by a doctorate in law hate gung-ho military types so as you can't leave out your ten years in the navy leave out the other.
Even if ten years in the military is considered to give leadership and personal skills (and I personally think it normally merely imbues a false sense of self-importance) nobody wants to know the full details including an itinerary in enough detail to get Gerardo Rivera thrown out of Iraq. It's the fact that you've been in the Navy that is important so just give the ten years as in the Navy, with a special entry for the last three years. If you are applying for a job where some of your previous navy experience was necessary then stress that and telescope the other.
Detail what is relevant and compress the rest. And as what is relevant for one job is not going to be relevant for another, then you need to change the CV slightly each time. |
|
| Need a new job, and new skills | Fri 09 May | sooner |
| Ive been on a long term contract that will be ending in the near future, and I need to pick up some new skills to increase my employability. Primary tool for the last several years has been Delphi, but theres no jobs for it around here any more. Ive used a little bit of SQL on the job, and a little bit of java & c++ back when I was in college.
I spoke with a recruiter that said java would be the best thing to add, but Im wondering about C#.NET. I dont want to be penny-wise and pound foolish. On the one hand, java is established in many businesses and many schools are using it to teach CS. On the other hand, C#.NET is MS. The recruiter also said it wouldnt hurt to brush up on my c++.
Ive got about 3 months before I need to begin the search, which basket should I place my initial eggs? |
| Fri 09 May | Brad Wilson (dotnetguy.techieswithcats.com) | If you're looking for best bang for your buck, there's definitely going to be more Java jobs available than C# jobs right now. Long term, choose C# if you want to be tied to Windows (because it's far better at Windows development than Java is), or Java if you don't. Simple as that. Both will offer employment far into the future. |
| Fri 09 May | Mark Hoffman | Although I'm a C# guy, if I were in your shoes I would probably lean more towards Java.
Just like Brad said, there are likely to be more Java jobs in the immediate future. However....I think the MS Marketing Juggernaut will accomplish it's goal of convincing corporate America that .NET is the wave of the future and I predict a pretty good increase in the demand for C# over the next few years.
Obviously, with Java you aren't limited to just a MS shop and it's easier to expand your skills into the Unix arena. Whereas with C#, you pretty much need to stick within the MS arena. (What I mean by that is that if you want to be an expert in C#, you probably will spend a lot of time in other MS technologies and not have much time left over to be an expert in areas involving Unix.) |
| Fri 09 May | Joel Spolsky | Java and C# are so close, that any employer who would not hire a C# programmer for a Java job or a Java programmer for a C# job is not the kind of place where you want to be working. |
| Fri 09 May | Katie Lucas | You know that. I know that. Everyone with any sense knows that.
Now, how do we smack that into the heads of the pinheads in HR and the clueless phonedroids at the recruitment agencies?
Because they're the ones in the way. |
| Fri 09 May | Michael K. | Yes, Joel, but 90% of the information a programmer has to know is about the libraries, not about the language itself.
So, would you hire a Java programmer to write a Java program, or would hire a C# programmer, to learn the needed libraries in 1-2 months (at minimum), and then write the same Java program?
MS indeed has this attitude: they hire the smartest person, even if he/she doesn't know the required stuff, and then train him or her.
However, I don't know if most companies can afford this luxury. |
| Fri 09 May | T. Norman | Obviously, it would be better to hire somebody who is smart and knows the particular language and libraries over someboy who is smart but doesn't have the specific experience.
The problem is that many companies will leave a position open for months while they look for a perfect match of their laundry list of languages, or hire somebody DUMB who claims the specific experience. With the time and money they spend searching for the perfect candidate, they could have hired somebody smart and brought them up to speed.
It's not a matter of whether they can afford to hire smart people and train them, but whether they can afford to continually refuse to hire people who don't have the perfect match of languages at the moment. |
| Fri 09 May | Nat Ersoz | http://www.joelonsoftware.com/articles/LordPalmerston.html
I think he mentioned the same thing. Its too bad, because whether its true or not (I think not), as Katie pointed out, HR and hiring managers think it to be true. And the myth will certainly persist as long as engineers themselves buy into it.
The only way to swim upstream against that current is to have a substantial laundry list of results. You can't argue with results. |
| Fri 09 May | Nat Ersoz | Sorry, my reply was to M.K. |
| Fri 09 May | sooner | Well, I think we all agree that there's some pretty stupid HR departments out there.
Since the limited consensus seems to be java, is Forte the primary IDE? |
| Fri 09 May | Mark Hoffman | Joel,
The syntax may be similiar, but just because someone is competent in C# in no way makes them competent in Java. It only means that they should be able to learn Java fairly quickly. And vice-versa.
So, unless a company is willing to shovel money down your throat while you ramp up on the specifics of a language, I don't see a company hiring a C# programmer for a Java project unless that programmer has a proven proficiency in Java. |
| Fri 09 May | later | I'm going to go the opposite way and say you should brush up on your C++. Then learn C# after you've landed a new gig.
Since you've been using Delphi, I assume you know Win32 to some extent. Although Java syntax is easy to learn, the API is HUGE. I think you'd have an easier time brushing up on C++ rather than learning all of Java. |
| Fri 09 May | Tj | If you're talking about generalpurpose ide, I don't know anyone using Forte. There's Eclipse and JBuilder though, both of which can be obtained for free. Don't forget to grab Java's sourcecode. One friend really taught himself Java quick by using the 'browse symbol' tool, looking at its sourcecode. The source to Java's apis is really clean, at least the stuff I've read.
Learning the class libraries is dead simple if you head over to the bookstore and browse v1 and v1.2 of:
http://java.sun.com/docs/books/chanlee/
I don't see why it's so hard to learn Java's main api as a c# guy joining a bunch of java programmers, since you'll have lots of code to cut 'n paste. It's only hard if you just have the javadocs and an o'reilly book to go by. You don't need to memorize stuff, just have an awareness of capabilities and the ability to look stuff up. |
| Fri 09 May | Big B | I was a C++ fan before I started using Delphi, and there is no way I am ever going back. C# should be a pleasant transition from OP, and you'll find the .NET FCL very similar to the VCL, although more modern in some respects. I'd think about job satisfaction first. And I know that wouldn't happen for me with either C++ or Java. |
| Fri 09 May | one programmer's opinion | You should brush on your networking skills.
The reality for many programmers is -- you get hired to work on stuff that you already know how to do.
Why would a recruiter be interested in submitting your resume to a client who is looking for a Java coder when there are ton of people out there who already have paid Java experience on their resume and are also looking for work?
Many companies seem to be holding back on starting new development projects and the people they do have on staff are probably doing lots of maintenance work. Perhaps you should target companies that are looking for help in this area? If you are lucky you might find several companies that need someone to not only maintain their Delphi applications but some of their Java or C++ applications as well. |
| Fri 09 May | sooner | Jeez, OPO, you really got me depressed.
5 years of experience, a CS degree, and I'm already relegated to the trash heap...
I was actually going to see if I couldn't cram enough to sit for one of the certification tests, and then write a utility or two at my current job for the 'paid experience'. Since I already have some (very limited) java experience, I feel with 3 months I could easily step in and work on a maintenance team. I wouldn't want to architect an app from scratch though.
The recruiter didn't say she would submit my resume, I just asked her what her clients were asking for. |
| Fri 09 May | Prakash S | Gotta agree with One Programmer's Opinion..
Give networking a higher priority, next comes building your skill set. |
| Fri 09 May | RocketJeff | 'The recruiter di |