last updated:10 Oct 2003 16:53 UK time
|
 |
|
(Comments added for week ending Sun 05 Oct 2003) | View Other Weeks
|
|
| SpreadSheets rows limit | Sun 05 Oct | Augusto |
| First, I dont undestand why excel (or others spreadsheet softwares) have a number of rows limit. My PC has 512MB ram, but Im limited by this. Sad :(
Ok, my problem: I have some CSV text files with a lot os rows. How do I manipulate the data in the files ? Delete some columns, multiply or divide lines/columns by a constant, sort, filter, etc...
Someone knows a software (free if possible) that do this ?
Of course I can make pearl or c# scripts myself. But a ready solution will be great. |
| Sun 05 Oct | Xxxxx Xxx | Use Access.
Or use Cygwin's 'split' utility to split the files into
smaller one that Excel can handle. |
| Sun 05 Oct | Sam Livingston-Gray | 'First, I don't undestand why excel (or others spreadsheet softwares) have a number of rows limit.'
2^16 = 65,536. Offhand, I'm going to say it's because the row index is still using a 16-bit variable. (=
I don't have it on my machine, but does OpenOffice.org have the same limitation? Alternately, if you wanted to stay in the MS Office family, you could import your CSV data into Access. (Access would actually let you manipulate the CSV file as a linked table, so you mightn't even have to import and export -- although depending on how much crunching you're doing, this could be rather slow.) |
| Sun 05 Oct | Matt Latourette | If you're running into the size limitations of a spreadsheet, that's generally an indication that a spreadsheet is the wrong tool for the job. It's like trying to cut railroad ties with a hacksaw. Spreadsheets are designed to do the sort of things that people normally do with spreadsheets. People don't normally go anywhere near the 65000 row limit. Something like MATLAB, IDL, Octave, or even ordinary C/C++/Fortran code would likely be a better fit your purposes. |
| Sun 05 Oct | Augusto | Sam,
I know the limit is by the variable limit. I just cant understand why the design is 'static'.
Quatro Pro or Lotus 123 in 1981(?) with this limit is admissible. But more than 20 years and the same limit ??? |
| Sun 05 Oct | Li-fan Chen | First, try opening a data source where you keep the data in a Access table or MSDB (free SQL Server) table. That way you can still do pivot tables on it.
Second, if the data averages out, you might try a trick one of my coworker did, you basically randomly delete the original data so that you are left with an average sample of less than 60K rows.
Third, get a real analysis tool.
:-) |
| Sun 05 Oct | Tom Vu | There are APIs that allow you to query csv files as if they are database tables, so you could use SQL. I know perl and python have libraries available. |
| Sun 05 Oct | Troy King | Li-fan Chen, what is wrong with using Excel as a manipulation tool? I know it won't work for his current problem of >65K rows, but Excel is excellent for quick manipulations of data. I even use it to write repetitive code. |
| Sun 05 Oct | Harvey Motulsky | It depends on what you want to do after you've gotten the data into a program, but our scientific graphics program (GraphPad Prism) allows an essentially unlimited number of rows. You can get a 30 day demo from:
http:\\www.graphpad.com
You'll be able to import your data. After that, it depends on what you need to do. |
|
| Testing - Best Practices | Sun 05 Oct | TestyInDenver |
| I was recently hired by a small software company that has little to nothing in the way of established testing procedures. Id like to turn the situation around as soon as possible.
Pro-XP developers favor so-called test driven development. Test cases are written first as a way to define the expected behavior of a piece of software before it is written. Of those of you who have experienced this, does this work in the wild? Do you ever run into the problem of test cases being so complex that theyre bug-prone too? Does this promote test cases that are too simple to catch enough errors?
What are your opinions on JUnit and its ports in other languages?
How much of your testing is automated? How much has to be done by hand?
What sort of testing documentation do you find helpful, both in the pre-testing phase as well as for documenting completed tests?
How closely do your testers work with the developers? Do they have an intimate knowledge of the code being developed, or do they favor black box testing? |
| Sun 05 Oct | Brad Wilson | 'Of those of you who have experienced this, does this work in the wild?'
Yes. In fact, it works very well.
'Do you ever run into the problem of test cases being so complex that they're bug-prone too?'
I haven't yet. The point being, obviously, that the test case should be simple to verify as being correct. As soon as the test case is no longer simple to verify, then you need to refactor it into simpler tests.
'Does this promote test cases that are too simple to catch enough errors?'
You aren't looking for 100% coverage. You're looking for pretty good coverage, and when you find a bug that has slipped through, you back-fill to a unit test that indicates the bug before you fix it. (The general steps are: find the bug, isolate a simple unit test to reproduce it, write the unit test, run to verify it fails, fix bug, run to verify it succeeds.)
'What are your opinions on JUnit and its ports in other languages?'
We use NUnit, and love it. There are commercial testing frameworks that have more features that I would consider, if it came to the point where we needed them.
'How much of your testing is automated?'
All of it.
'What sort of testing documentation do you find helpful, both in the pre-testing phase as well as for documenting completed tests?'
The tests are simple enough that either the code is self documenting, or a couple lines of in-code comment are used to indicate the exact condition being testing. Intelligent method naming helps here, too.
'How closely do your testers work with the developers?'
Unit tests are always written and run by developers. Unit testing must succeed before the code can be handed off to functional testers.
Functional testers generally work more closely with the customer to ensure that the functionality matches customer expectations. Unit tests are too low level for this.
'Do they have an intimate knowledge of the code being developed, or do they favor black box testing?'
Unit tests are always black box (you write them first... how can they be anything else?). Functional testing is also black box, as it's application interaction. They understand the app, but not the code (necessarily). |
| Sun 05 Oct | Brad Wilson | Oh, and I'm in Denver as well. Peter Provost has mentioned the desire to start a Pragmatic Programmers group in the area, and some other bloggers have shown interest as well (Greg Reinacker, Gordon Weakliem are a couple names that come to mind). There are a few of the XP people who live here, like Lisa Crispin.
I think I'll re-rattle the trees on that one, see if we can't get something moving... |
| Sun 05 Oct | anon |
Well, we do XP as well. I was going to comment, but Brad's pretty much said all that needs to be said.
Currently, the test coverage from out unit test runs about 80%. What's missing? Mostly tests on the user interface.
Brad, do you guys have tests for the interface as well, or do you consider that functional testing? |
| Sun 05 Oct | Brad Wilson | We consider UI testing to be functional testing, mostly because there's no really good UI testing libraries for ASP.NET yet. If something came along that was useful and automated, we'd probably use it (to test low level stuff, like web controls). |
| Sun 05 Oct | Tom Vu | What are your opinions on JUnit and its ports in other languages?
I write unit tests for most non trivial classes.
In unit testing you can only write tests that prove your method or class works the way the test thinks it should.
How much of your testing is automated? How much has to be done 'by hand'?
Load, stress, and unit testing is all automated. After the initial creation scripts.
What sort of testing documentation do you find helpful, both in the pre-testing phase as well as for documenting completed tests?
I copy other people's tests and change where needed.
How closely do your testers work with the developers? Do they have an intimate knowledge of the code being developed, or do they favor black box testing?
They do functional testing only. They have no clue as to the code behind a system. |
| Sun 05 Oct | Dave | Can someone recommend favorite books or articles that discuss the techniques outlined in this thread?
Right now, our unit testing is not as structured and rigorous as I'd like, and we are depending too much on functional testing to catch bugs in all layers of the app. I'd like to figure out how to get NUnit into the mix, but I'd like to 'read up' on some best practices before I throw something else into our process.
Thanks!
Dave |
| Sun 05 Oct | JWA | I'm just begining to move over to the NUnit (and NAnt) systems, and I found these two articles helpful for understanding the overall process:
http://216.87.26.21/aspNUnit2WithVB.asp
http://www.ftponline.com/vsm/2002%5F12/online/smith/default_pf.aspx
--Josh |
|
| Hyphenation Library | Sun 05 Oct | Dave B. |
| Can anyone recommend a hyphenation library that works with the Visual Basic RichTextBox control. Im looking for one that will automatically hyphenate words in the control.
As an example, lets suppose that at the end of a line the word anything is being typed. This library would look up the word and know that it could be hyphenated as any-thing therefore any- would remain on the line I am typing and thing would wrap to the following line.
I have found one library named Dashes that may or may not suite my needs. I have yet to inquire of them.
Any suggestions would be greatly appreciated. |
| Sun 05 Oct | Robert Jacobson | Is this for VB6 or VB.Net? Getting hyphenation to work with a standard RichTextBox sounds like a difficult task. If you're looking for word processor-like functionality, you might want to look at this one third party component instead:
http://www.textcontrol.com/ |
|
| J2EE architect certification | Sun 05 Oct | certifiable |
| What are your thoughts on J2EE architect certification? Worth doing, or not?
(Ive been developing Java since 1996 and J2EE since 1998). |
| Sun 05 Oct | Tom Vu | If you don't have to pay for it or spend too much time studying then get certified/licensed in J2EE or anything else. Considering you have been doing it since '98, I would suggest you spend your time learning something else. |
| Sun 05 Oct | certifiable | I'd be looking at architect certification as a way of moving from being JustAProgrammer to being an architect.
I'm not interested in Java certification for the reasons you say: I could be teaching those courses, no need to take them. |
| Sun 05 Oct | Tom Vu | 'I'd be looking at architect certification as a way of moving from being JustAProgrammer to being an architect'
A certification does not make someone architect. It's probably better if you just start calling yourself a very smart software/system/infrastructure architect. Most people will just assume your are. |
| Sun 05 Oct | certifiable | > A certification does not make someone architect.
Sure. As the JavaWorld article on certification says, 'certification is not a substitute for experience'.
But it's also a way to get your foot in the door.
> It's probably better if you just start calling yourself a very smart software/system/infrastructure architect. Most people will just assume your are.
No, they, the ones in a position to hire me at any rate, will ask for references for my last architecture job.
Whereas if I have the certification, and can talk the talk, they're liable to let me walk the walk as well. |
| Sun 05 Oct | contractor | if you have 5 years of experience already, it should not take very much time to study up and take the test, so why not just do it? |
| Sun 05 Oct | Matt H. |
Who needs an Architect?
http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
No, seriously. IN GENERAL, I don't like what many people mean when they use that term.
Of course, there are exceptions. Apllied correctly, it's a real good thing (RGT).
JMHO ... |
| Sun 05 Oct | certifiable | > Who needs an Architect?
All the places I've seen that do architecture badly.
Seriously.
One of the reasons that I want to do it is that I'm tired of seeing the architecture fucked up as badly as it usually is, and good engineers just holding the line to try to keep it from getting any worse. |
|
| bionic office cure for monitor glare? | Sun 05 Oct | peter renshaw |
| after reading the bionic office article, http://www.joelonsoftware.com/articles/BionicOffice.html
I could not help wondering if the office help reduce monitor glare.
I like looking out the window, but working in an office that has east/west facing room I have light reflecting off my monitor early in the morning and afternoon. Glare is a problem and I know more than a few developers working in bunkers to avoid glare.
Anyone else got any ideas to reduce glare on monitors? |
| Sun 05 Oct | Brad Wilson | Get LCD monitors. I get zero glare off them. |
| Sun 05 Oct | Guillermo | i've an 17' LCD but glare is not off, only minor.
the window (oriented West) is at my back, even with curtain and awning sometimes.
the light must be at any other angle to avoid glare. |
| Sun 05 Oct | peter renshaw | *new lcd monitors* yeah maybe in like 3 years. While I can get cheap reliable CRT's I'll stick with them.
why do LCD's reflect less light?
I was thinking more of how can you design workspace for minimal refelection, maximum lighting maintaining a distant view. Not quite software engineering but when you stare at a monitor all day small things like this matter. |
| Sun 05 Oct | Brad Wilson | LCD's reflect less light, because the surface is different. CRTs are polished glass. LCDs are matte... something. I'm not sure exactly what. :) Also, LCDs are perfectly flat (many CRTs are also perfectly flat, but not all of them), which means less angular light. |
| Sun 05 Oct | Brad Wilson | By the way, you should consider it a SERIOUS problem if your work won't provide you with high quality materials for you to work with. For a developer that makes $60k/year, a couple $500 LCD monitors amount to less than a week's worth of salary.
Things I don't compromise on: lighting, monitors, and chairs. My eyes and posture are too important to me. That would be a deal-breaker (or I would at least provide these things for myself, and hope to inflict horrible guilt and shame on my employer. :-p |
| Sun 05 Oct | Matt Latourette | No question about it. LCDs are the way to go. The reduced glare, high brightness, no flicker, no spatial distortion, and crisp pixels makes a world of difference. I work with a dual display (one CRT and one LCD) and the side-by-side comparison is dramatic. The only reason I still have the CRT on my desktop is because I've not yet found an LCD equivalent to the 24" 16:9 ratio Trinitron I'm using within a price range I'd consider justifiable. The IBM T221 is a gorgeous display and would be a suitable replacement if it wasn't $5000+ for one. I'll just wait until they come down in price. |
| Sun 05 Oct | Dennis Atkins | It's pretty much insane not to go with LCDs now. CRTs gave me nausea and made my eyes hurt. I hat to squint to read the text and the glare drove me nuts. Also, CRTs give off a fair amount of X-RAYs. Remember when your mom told you not to sit so close to the TV because of the radiation? And now you sit 18' from the TV 12 hours a day? You're just plain nuts to do this when there is now a far better alternative. You can work more hours, take fewer breaks and make fewer errors -- tell it to a reluctant boss.
If you are a developer and you can't afford a decent LCD for $500, you probably should ask if it's time to switch to a career you can make a living at. |
| Sun 05 Oct | Brad Wilson | By the way, I just found out that Dell is selling 20" LCDs (1600x1200) for $799, with both DVI and analog inputs. |
|
| How does disk defragging work? | Sat 04 Oct | Philo |
| Diskeeper has completed a defragmentation run on this volume and there remain 122 fragmented files and/or directories and 3413 excess fragments. (There were 4863 excess fragments before the defragmentation run, and now there are 29% fewer.)
Why?
Why wouldnt the program finish the job? How tough is it to defrag a drive thats not in use?
The other thing I dont understand is the requirement for 15% free space - Id think you could defrag with five free clusters, never mind needing a GB of free space. Sure itll take longer, but that should be a configuration option.
Can someone who knows the innards enlighten me on how this works?
Philo |
| Sat 04 Oct | www.marktaw.com | Isn't defragging like playing solitaire? You shuffle the pieces around until all the proper files line up. Think about Freecell... When you only have 1 open slot, it's not exactly easy to move one stack of cards to another stack where they should be. But when you have 4 or 5 open slots, it becomes much easier. |
| Sat 04 Oct | Li-fan Chen | The operating system has locked files. They stay fragmented and force other files from defragmenting. It didn't happen back in the DOS days because no one was locking anything. |
| Sat 04 Oct | Philo | Li-fan, which see: 'not in use'
It's a separate volume with NO files in use. And if I keep running defrag, each time it gets a few more fragments.
Philo |
| Sat 04 Oct | Philo | Mark - Solitaire's different; it's got rules to make it hard.
Shuffle a deck of cards, lay them out, face up, one after another. Now, you have one open slot - can you sort the cards using the one empty spot?
Of course you can. It'll take a while, but you can do it. That's my point. With 15% free space it should be cake.
Philo |
| Sat 04 Oct | Brad Wilson | Not helpful to your problem at hand, maybe, but I use the explicit defrag tool built into the OS, and it always results in a perfectly defragmented drive for drives that are not in use, and gets pretty darn close for the OS drive (which will always have locked files).
Maybe you should just use the built-in stuff? |
| Sat 04 Oct | abcde | >> 'Not helpful to your problem at hand, maybe, but I use the explicit defrag tool built into the OS, and it always results in a perfectly defragmented drive for drives that are not in use, and gets pretty darn close for the OS drive (which will always have locked files).'
Not necessarily so. This is simply what the program reports to you. I could write a defrag program that doesn't do a darn thing but make the drive spin for 5 minutes then tell the user that I just defraged the whole thing.
Dialog boxes are lies. I don't trust them. |
| Sat 04 Oct | Dave B. | http://www.howstuffworks.com/question548.htm |
| Sat 04 Oct | Dave B. | These links may answer your question better than the previous link I posted:
Why Diskeeper's algorithm isn't the best:
http://www.whitneyfamily.org/Hacks/?item=Defrag
Defrag source code and documentation:
http://www.sysinternals.com/ntw2k/info/defrag.shtml |
| Sat 04 Oct | Dave B. | Another one: (Kinda old but still applies I think)
http://www.winntmag.com/Articles/Index.cfm?IssueID=20&ArticleID=304 |
| Sun 05 Oct | sgf | I have to ask "Does it matter?" Its always been my experience that de-fragging made no performance improvement so I never bother anymore. In which case why try to be so thorough? Or is it the case that I've always been using a lame (built-in) one and that's why I see no gain? |
| Sun 05 Oct | www.marktaw.com | I know that you *can* do it with just one empty slot, so to speak, but at some point you reach a point of diminishing returns where you're fragmenting other files in order to defrag others.
In other words, it is kind of like Freecell.. Why would you seperate the 10, 9, 8, 7, 6, 5, 4 row you have just to make room for something else.
In any case, this is all on a somewhat theoretical level, and from what I've gleaned from watching the dos DEFRAG tool in action on my old hard drives. |
| Sun 05 Oct | Philo | I generally only defrag when my hard drive gets really bad, and then I think about it because I notice the drive thrashing when I do anything. So I defrag the heck out of everything, and definitely notice an increase in responsiveness.
Philo |
| Sun 05 Oct | Maytag Repairman | I've used a number of different programs over the years but have generally preferred Norton Speed Disk. With Windows XP I have noticed something similar to what Philo mentions in his original post -- Speed Disk runs for a while and then reports that it's done, but the on-screen display clearly shows that there is still some fragmentation. This is on drives that have lots of free space (for example 120 gig drive with 60-70 gig free).
Even more odd is something I noticed a couple of years ago -- disk defragmenters don't seem to work at all if you are running an NT based OS (Windows 2000 or XP) and have a a FAT32 formatted hard-drive. I tried Norton, Disk Keeper and the defragmenter that comes with Windows and got the same result every time - The program runs for a while and then reports that it's done, but the on-screen display clearly shows lots of fragmentation. |
| Sun 05 Oct | Maytag Repairman | Thanks to Dve B for this link (
http://www.whitneyfamily.org/Hacks/?item=Defrag
) -- it explains why disk defragmenters don't work on FAT32 drives when running Windows 2000 / XP
'The operating system doesn't provide for defragmenting directories on FAT and FAT32 drives. While all your files will be as defragmented as possible, the immobility of directories totally throws a wrench in the process.' |
| Sun 05 Oct | Jack Johnson | If you haven't already, you may want to try PerfectDisk by Raxco ( http://www.raxco.com/ ). Over the years, I've switched between Diskeeper and PerfectDisk depending on which one worked better on my systems in their current versions. I'm currently using PerfectDisk version 6, which has done a much better job (i.e. few or no remaining fragmented files) on my systems than Diskeeper 7. I haven't tried Diskeeper 8 yet. |
| Sun 05 Oct | Eponymous Biro | Diskeeper can be set to run defrag at boot-time, there are also options relating to defragmentation of the paging file, MFT, etc. Maybe some of those would have an effect? |
| Sun 05 Oct | Nathan | i'm thinking about setting up a schedule for my disk defrag - is there any harm to doing this daily, weekly, etc? can defragging too often hurt my hard drive? |
|
| IT Department Pet Peeve | Sat 04 Oct | Bob |
| This question is just fluff, but, hey, its the weekend. When I started off programming in 1989 I worked at a small software company, and people addressed me by my last name. Later I took a job at a large software company and people again called me by my last name. Now I work in a Fortune 200 company, and in IT rather than working on software which gets sold. People here insist on calling me by my first name, which Im uncomfortable with, and even worse, they insist on calling me Robert instead of Bob.
This seems like a stupid, leucocratic, politically correct mandate from some corporate HR type. I always thought that this first name business was for the touchy-feeling sales & marketing folks - not engineers. Am I right, or do all companies nowadays wanna pretend theyre your buddy by being on a phony first name basis? Just my pet peeve. |
| Sat 04 Oct | Matt Latourette | I think you're being a little overly sensitive. At my workplace, everyone except physicians are addressed by their first name. There aren't any HR drones here, so that's clearly not the source of it. Now that I think about it a little more, I can't remember ever working anywhere where people didn't address each other by their first names. |
| Sat 04 Oct | Dennis Atkins | Hm... I think you shuld have some fun with it. When they call you 'Robert', just smile and say 'Mr. Jones, Bob is a little informal for me, just call me Mr. Smith.'
If you play it right, you could develop a reputation as being the quirky formal guy, which people will take to mean you must be a mysterious and elusive genius.
Once they get used to that one, bring in a few more one by one -- perhaps install a shoe rack in your office with 9 pairs of shoes and insist that folks entering your office remove their shoes. This particular example I learned from a guy who used this method to get big raises and be considered indispensable. It's all part of the magic. |
| Sat 04 Oct | Joe AA. |
I hadn't given this much thought... maybe it is a 'culture' thing, which may explain why I haven't thought about it. I guess that would be equally true.
I see it this way. Your name is your identity, and unless you just want to disappear as an individual into the herd, you decide what you want to be called.
I go by Joe. Whenever I answer the phone at work, it's always with 'This is Joe'. Period. Only at one place I worked (way in the past), was there a 'rule' to answer the work phone with a specific phrase, and I always broke that rule. It was too long for me.
Unfortunately my email address was set up prior to me starting this position as 'Joseph'. That does confuse some people when they look for Joe.
With a name like Robert/Bob there may be another aspect since it is a common name. On this project we have eight different people with Robert/Bob. It can get very confusing on a conference call. |
| Sat 04 Oct | Spam | Probably could get an answer out of google, but I'm here now, so oh well.
What's the ratio of unique last names to first names? Anybody have any idea? |
| Sat 04 Oct | Dennis Forbes | This fascinates me, as I have never worked in a workplace where people were addressed by their last names (apart from "frat" type 'Forbsey!' variations). Do people really work in workplaces where people address each other as Mr. Surname? That sounds absurd. |
| Sat 04 Oct | Philo | I generally try to go by 'Philo'
Philo |
| Sat 04 Oct | le bob | Hm how odd. I've worked at places with 30, 200, 2000 and 30,000 employees and never once have I encountered a culture where they called people by their last name. |
| Sat 04 Oct | Chris | At a school maybe? Teachers are addressed by students as Mr. Surname, but by other teachers as FirstName. Except in Boston Public when they are in trouble. |
| Sat 04 Oct | Dennis Atkins | It's not so uncommon.
Doctor Smithson, patient to see you!
Would Mr. Peabody please step to the front desk?
Senator Goodfellow is a lunatic!
Also, in many asian cultures people are called by their surnames, even informally. This sometimes carries over to the west -- I have several asian friends whom I address by their surname, as does everyone who knows them. Most don't realize it's a surname though. |
| Sat 04 Oct | Rob VH | I often feel a little funny addressing people who are much more senior than me by their first names. I typically try to compensate by addressing them as Sir or Ma'am when it fits the conversation.
I'm another vote for a return to more formality in the workplace. I've been interviewing lately, and I find it a bit bizarre to be addressing my prospective boss by his first name, 5 seconds after I'm introduced to him. |
| Sat 04 Oct | z | bob's experience seems unusual. To make matters more complicated he doesn't tell us what country he is located in and whether he prefers to be addessed as 'Mr. Surname' or just 'Surname'.
I've been in the software business since well before 1989. People who would be considered colleagues, which usually meant all company employees, used first names. Anyone who insisted on being referred to as 'Mr. Surname' would be considered an oddity.
As a fan of Sir A. C. Doyle I have thought it an interesting characteristic of those times that his main characters refer to each other as 'Watson' and 'Holmes' rather than by first name, even though they were close friends. |
| Sat 04 Oct | Jason | Don't know if this applies to you or not, but it could actually be a directive from HR with at least a basis in a good reason.
My business partner used to work for a hospital in IT support. They went out of their way at the hospital to refer to their IT staff by their first names. Why? Because users did not like submiting requests to the IT support email or phone number and waiting in the queue. To get around this they would look up the IT guy that last helped them in the company directory, (by their last name of course), and call him or email him directly. Most IT support guys were too nice to force people to go into the queue, they'd just help the people out as they called. This wreaked havoc with the scheduling and prioritizing system that was in place to support the 2000 or so users. So they started a policy of identifying people only by their first names.
Like i said, may not apply to your company, but it is a posssiblity. |
| Sun 05 Oct | Wayne | I generally prefer to be called by my first name, but for some reason people insist on calling me Major Dick, even though I'm not in the Army and my first name isn't even Richard! |
| Sun 05 Oct | Stephen Jones | Using first names in business is an American business practise that has passed over the Atlantic. I suspect the change in Britain came in the late 70's early 80's.
Travel a bit and things get interesting; the Spanish commonly use the surname without any title rpeceding, which is certainly considered very ill-mannered in the UK (the 'Watson'/'Holmes' form of address comes from English public and prep schools, andi is a rarity now, particulary as the upper class now think it's cool to try and imitate a barrow-boy). They also commonly prefix the first name with 'Don' (the Catalans use 'Senyor') so you get addressed as Mr. Stephen or even Mr. Stevey. The Arabs also do the same in English, so when the students ask for their teacher you haven't the least idea who they are talking about.
Anyway we all ought to be thankful we don't work at a Call Centre where we find we have to answer to entirely imaginary names, often from a completely different language and culture. |
| Sun 05 Oct | TK | An anecdote: A major exec in my really big company upon meeting folks or speaking to a group would always begin very sincerely with, "Please call me Earl." |
| Sun 05 Oct | Matt H. |
I met Larry Wall once. Called him 'Mr. Wall'
He responded by saying something like 'No one has called that since high school' --- or something like that.
I thought it was odd, because the geek-leadership-culture of the Open Source Movement forced him to be that modest. The guy's a hero. I shouldn't be 'bad' because I tried to show him a little respect - especially when I was adressing him totally out of the blue at a conference.
sigh.
But, dude ... I met Larry Wall. That was like, cool and stuff. :-)
regards, |
|
| Books on GUI app architecture? | Sat 04 Oct | Mike Swieton |
| Does anyone know of a book on design of GUI applications? Not on user interface design, but on the design of the code behind it. Something that goes into MVC in a bit more depth than a passing mention ;)
I have the GoF book, which is very good, but also rather abstract. ANyone have any recomendations? |
| Sat 04 Oct | Chris Hanson | Up-front note: The references I'm going to give you are very Macintosh-biased. That's because they're for people learning Mac OS X development. But you'll find the concepts very useful regardless of what language, framework, and platform you're developing for. I learned Objective-C and the OpenStep (now Cocoa) framework in mid-1997. Learning them made me a much better developer even while I was still working in C++ with the PowerPlant framework, because they cleared up a lot of exactly this kind of issue for me.
Online, check out 'The Objective-C Programming Language' http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/index.html from Apple. It goes into Model-View-Controller in a bit of detail, in one of the best overviews of real-world object-oriented programing concepts I've seen.
In print, get your hands on 'Cocoa Programming for Mac OS X' by Aaron Hillegass. Read through it; it'll show you the various design patterns used in Cocoa and how you use them to build good applications cleanly. This will get you a bit more knowledge about how to practically apply MVC in the real world (and also give you a bunch of background on the best desktop application framework on the market).
I'm not recommending these to try and turn you into a Mac programmer. I'm recommending them because they'll really do a good job of teaching you what you want to know in a very practical way. (The fact that you'll probably want to become a Mac programmer after reading them is only a pleasant side-effect...) |
| Sun 05 Oct | Brian | You may want to take a look at the online book and some of the tutorials at Relisoft ( http://www.relisoft.com/ ). Specifically, look at the chapter on 'Windows Techniques' here: http://www.relisoft.com/book/index.htm |
|
| is this industry intellectually moribund? | Sat 04 Oct | ... |
| Ive been around for quite some time, and Ive never seen such boring times. Not bad times, mind you. Everyone I know is employed. Not bad times, boring times. There are no interesting projects. 10 years ago I had friends who could get me a job working on compilers, interesting graphics architectures, projects where I actually wrote algorithms.
These days the same people are retired if they were successful, and if they werent successful, they are writing medical billing systems. I see a lot of work in my future writing SQL queries for medical billing systems. Perhaps Ill get to use a case statement, also. Even the founder of this site makes a bug tracker and a program that organizes HTML. Is anyone working on anything cool? Im thinking of going to film school, or moving to Mexico to learn spanish, just so my brain doesnt rot away. |
| Sat 04 Oct | Mike Swieton | I think it's just that the easy problems are solved. The interesting things that are left, algorithm research and such, seems to be the domain of academics. What algorithm-type problems remain to be solved? Sure, people are working on trees and other data structures for databases and filesystems and such, but how many DBMSs and FSs are there?
If you're doing graphics work, you're either on a death march writing games, or you're working on what, one of the 4 visualization projects out there (Ok, there's more than visualization and more than 4 of those, but...).
And consider: Even if its not *new*, it can still be new to you. Also, at least you're not a doctor: medical doctor's almost never deviate from established procedures (unless doing research. Does your general physician do research? Didn't think so.).
Most industries do this. It's dissapointing, sure, but there's still an ocean of things out there I've never touched. Is that enough? I don't know; ask me in 10 years. |
| Sat 04 Oct | Bob | Mr. Ellipsis Person, I couldn't have said it better myself! When I was a kid in grade school, I watched Carl Sagan's 'Cosmos', and I couldn't wait to see what wonders the world had in store for someone with a MS in math, and one in the brand new world of COMPUTER SCIENCE! 'Surely', I thought, 'when I'm thirty-five I will be beholding the mysteries of the Universe with astonishment and awe!'
Now I write inane 'enterprise' database applications as I bide my time until I have to take a job at Wal-Mart when this job gets outsourced to India. |
| Sat 04 Oct | Bored Bystander | What's happened is: computer technology has become commonplace in the household and office; everyone takes technology for granted; so, tech has become a commodity. And so have the people who do technology.
When something becomes a commodity, it becomes 'boring' to its users, and the really talented people don't take an interest in it. The commodity approach is seen all over our industry. HR departments in companies treat us like cattle, as do most managements. We (developers) are regarded as 'consumers of technology', so we're marketed to based upon glitz and features. It's assumed that none of us has any business developing our own stuff with own unique individual fingerprints, so the emphasis is on commodity tools like other people's components, and fitting into huge bureacratized teams.
It's a shame given that there's so much cool technology around us. The attitude toward technology has changed over the last 15 years from a few appreciative geeks who seek to learn and improve the state of the art, to the massive overwhelming consuming rabble that treats it like a phone or a toaster, and the hiring parties who want to regiment us like we joined a branch of the armed forces. |
| Sat 04 Oct | ... | after thinking about it, google is doing some cool stuff, i guess.
however they seem mostly finished with the cool part. too late for me!
designing phones and toasters actually seems more challenging than the software projects I'm involved with. maybe i should start ramping up to become the next michael graves.
mike makes a good point. most jobs are pretty rote. but at least doctors can assauge themselves with the fact they are 'helping the sick become well.' whereas my medical billing system is 'helping the sick become poor.' |
| Sat 04 Oct | Philo | I'm sure that people who grew up in the 30's talked excitedly about new advances in robotics, and how cool robotics would be and what new problems they would solve.
...only to find themselves designing the new paint sprayer for Ford Motor Company.
Without the 'mundane' applications of exciting new technology, nobody would bother spending the money on the cutting-edge stuff.
In addition, I think 'exciting' is what you make of it. I think my current job is pretty exciting - I get to do cool stuff with browsers, .Net, and SQL Server. *I* think it's very cool to see something that *I* have built being used by a lot of people. But I guess *you* would find it 'boring' since it's 'just' an invoicing application for a truck parts buying group.
Philo |
| Sat 04 Oct | Dennis Atkins | If the easy problems have all been solved, why is there so much crappy unstable insecure software that is frustrating to use and doesn't do what I want?
What I'm saying is that if it as easy to make stable, usable software, there would be a lot of it.
Since it's so easy.
But there's not.
So it must not be. |
| Sat 04 Oct | ... | if writing truck parts buying applications float your boat, i'm all for it. i have tainted my brain with a bit too much academic nonsense, thus i don't think i'm going to ever be too happy writing sql server applications. it *IS* nice when people use and appreciate your work. The only time I hear from others about my work is when something goes wrong. I don't think boredome is a sustainable position for too long, so I'm just ranting a bit.
That, and it's a rainy day, my friends are all out of town, and i'm in a bit of a funk. Perhaps I'll head over to the coffee shop and read a book. |
| Sat 04 Oct | Bob | Philo,
Just because *I* find something boring doesn't mean I'm saying that *you* have to find it boring too. Nor am I suggesting that your work isn't important. I'm just saying *I* wanted to work on something *I* consider cool and, as '...' said, it seems like a lot more people had jobs *I* consider cool back in the day. |
| Sat 04 Oct | Philo | 'The only time I hear from others about my work is when something goes wrong'
There's your challenge - write software that is 100% bug-free. Perfect your development environment. Create the perfect setup for delivering quality software.
Once you've done that, let us know how it's going.
Philo |
| Sat 04 Oct | ... | Dennis, I hear your point. But the problems you are talking about are engineering problems. It is a different mindset. Certain people have the engineering mindset, I don't think I do. I like to figure out weird things. Once the weird thing is figured out, it isn't so interesting to me to figure out the 80,000 possible things that could go wrong and write exception statements to display the proper error message. I used to be able to get jobs where there was some hairy mathematical/optimization thing no one could figure out, so I got to figure it out for them. Now I just encapsulate bureaucracy in software. |
| Sat 04 Oct | Roose | Yes I think there are two types of programmers: results-driven 'engineers' and intellectually-driven 'scientists'. The results-driven ones tend to get stuff done and get promoted. They like the technologies that get the job done (SQL server or whatever). The intellectually-driven ones tend to mull over some hard problem for awhile and spit out an original and elegant answer (which may or may not improve the product, and which may or may not produce anything visible to management). They tend to like stuff like C++ template metaprogramming and python.
The best programmers are an equal mix of the two, but most people I have met skew one way or the other. |
| Sat 04 Oct | ... | roose, that is a good way to put it. I'm definitely in the second group you mention. (however, I don't really like python. ;-))
I can implement 'best practices' like anyone else. I'm doing pretty well financially, my clients are happy with my work. I'm just not that happy with the work. It seems like anyone could do what I do now, and I liked it better before, when I felt unique and special. ;-) I don't claim to be doing anything but whining at this point, just doing some late-afternoon venting on a rainy day. |
| Sat 04 Oct | Script Kiddie (In the Basement) | >> 'I'm doing pretty well financially, my clients are happy with my work. I'm just not that happy with the work. It seems like anyone could do what I do now, and I liked it better before, when I felt unique and special.'
There are many unemployed IT folks around and recent college grads that would probably love to do what you are doing... for a while at least.
I think everyone likes to do unique and special things and to feel the same way. I know I do.
I believe you will find this in everything you do, whether you work at McDonalds or you're President of the US. It is the way life is. Life simply isn't one big 'high'.
Enjoy your time, spend it with your family and your friends. Join some clubs, join a church, go site seeing (I take long drives to settle my mind) or what have ya.
Let me tell ya, join the army. You'll be glad you only have to code SQL all day. |
| Sat 04 Oct | Dennis Atkins | Hm... well I don't see it that way. Sounds like you're saying I'm just a lowly 'engineer' and not some high and mighty 'scientist'.
in both science and in engineering, it's 99% perspiration and 1% inspiration. So, yeah, you have do the leg work if you want to get results. Anybody can have a hypothesis, or a brilliant idea if only someone would work out the pesky details.
I've developed quite a few clever algorithms myself over the years. So that makes me a scientist I guess, huh? Well actually I am a scientist and a designer as well. There's no method I know of to develop the next smash hit pharmaceutical now is there? Or breakthrough in plasma physics? Nope... it's just a lot of hard work. And once some breakthrough occurs, which is rare, it's still tons of work to make it usable and figure out all the details. If all this is 'boring', then scrience is boring because science is about work, not just about about philosophizing about how brilliant one is and how everyone else just doesn't measure up because they are sullying themselves with nasty boring 'brickie' work figuring out those pesky details.
For all the brilliant scientist who are so easily bored, I recommend an exciting career in pure academics.
As for me, I find it incredibly difficult to write stable software that users find intuitive. It's quite a challenge and not boring at all -- it seems to be an almost Sissyphian undertaking. Now I do understand that designing software that is stable and easy to use is quxte boring and easy for you smart folks out there. It's a real shame that you guys are too bored with it all to be bothered doing so because I'd really like to see some of this brilliantly designed easy to use and stable software you guys would be capable of creating if you weren't so bored with the tediousness of it all. I'm sure there's a lot of great ideas you brilliant guys have that the less intellectually capable such as myself could learn from, if only we could see an example. |
| Sat 04 Oct | Roose | I don't think you're addressing me, but see the last comment in my post.
If you're purely intellectually-driven, then you're NOT a good programmer. That includes myself. You're just a smart dude who knows a lot about programming.
I agree that the best programmers are the ones who have created the best software. But that takes both skills. The purely results-driven people produce utter shit code that no one (including themselves) can understand or modify 6 months later.
If you don't have people who are balanced, then you can achieve the same result by having both types of people on your team, working closely together (which is a challenge, considering how differently they work). The scientist people can handle some stuff that the engineers can't, and vice versa. But as I said, the best programmers can wear both hats. |
| Sat 04 Oct | Fairlight |
Hey! Triple Dot :
Move to BioTech mate and go and find
a cure to AIDS.
If you wants something which stimulate you intellectually.
Go ahead coz it's a hell of a task!
Have Fun Craking It :-) |
| Sat 04 Oct | ... | Fairlight, I am actually looking into going into a phD programme in bioinformatics. I'm just waiting for the one at UCSC to start so I have an excuse to move back to the west coast. :) |
| Sat 04 Oct | Bob | Mr. Ellipsis Person,
Just curious because that sounds interesting; what's your background? How old are you? How old is too old to start a bioinformatics program? |
| Sat 04 Oct | valraven | Bionformatics is writing programs for scientists
who are solving the real probem. Not sure if
that's what you have in mind. |
| Sat 04 Oct | ... | bob, i am too old to be going to grad school for anything. but i don't have a wife or kids, so I wouldn't be harming anyone other than myself. I also have worked with 3 MD/PhDs in the past who would write letters of recommendation. I'd just have to re-take organic chemistry.
I have a math degree and have taken loads of night classes in everything from economics, electronics, biology, etc.
valraven, I'm slightly anxious about that fact. I don't necessarily want to be a sysadmin for a BLAST installation somewhere. However, at least by taking a phD i'd get to learn more about molecular biology, biochem, statistics, genomics, proteomics, etc. Thus I'd be learning some new stuff along the way. Due to my software background I have a better chance of getting into a bioinformatics program vs. say an atmospheric physics program.
I'm not sure I will do it, because the program I want to get into (UCSC, for personal reasons (all my friends/family live there)) hasn't been approved yet. But that just gives me a bit more time to prepare and decide whether or not it is something I want to do. |
| Sat 04 Oct | Dennis Atkins | Well there you go then! Sounds like a good solution actually, triple-dot. You'll get to work on more challenging problems.
Even if the program isn't official, would there be some way to find out from UCSC the likely requirements for it and start in on those? |
| Sat 04 Oct | ... | I've emailed one of the professors, and read through this:
http://www.soe.ucsc.edu/programs/bioinformatics/undergraduate/faq.html |
| Sat 04 Oct | triple dot | also, I actually like the name "triple dot". maybe I'll register the domain... :) |
| Sat 04 Oct | valraven | I have taken several of the bioinformatics classes
from the extension and they have been very
good.
Biology/chemistry/physics is a hell of a lot harder
than computers. It the ultimate hacking though.
And the jobs won't soon go to india.
Few people can do computer science. Even fewer can do
biology. What will remain? Back to farming? |
| Sat 04 Oct | Dennis Atkins | Well, the page you gave looks neat. It does say that they *currently* offer a PhD in bioinformatics. So, although they haven't created the bioinformatics department quite yet, they do seem to have a degree program in it. Why not apply? Looks like a fun program. |
| Sun 05 Oct | Sam Livingston-Gray | Dennis-
'There's no method I know of to develop the next smash hit pharmaceutical now is there?'
Funny you should mention. I'll admit to not knowing a heck of a lot about the pharmaceutical industry; however, it seems like a great deal of this kind of 'science' has been reduced to 'hey, let's see if we can find a new complex molecule and exploit it, even though we don't really understand how it works,' and uses methods very similar to Edison's attempts to find a suitable material for use as a filament in an incandescent bulb -- in other words, brute force algorithms. ;> So the term engineer doesn't carry much stigma to me, since being a scientist seems to entail just as much stumbling around in the dark, and the use of 'impure' methods like array 'analysis.' (= |
| Sun 05 Oct | Dennis Atkins | Hey Sam,
Yeah well that's exactly the point I was making.
Actually though, there is one near-sure-fire method to do it...
Step 1 - find an herb or other natural substance with the miracle curative properties
Step 2 - identify the exact molecule that does the magic
Step 3 - develop a method to synthesize said molecule
Step 4 - slightly alter the molecule so it's patentable
Step 5 - use marketing to compensate for inconvenient fact that Step 4 made the molecule toxic and introduced a number of dangerous side effects not present in the naturally found substance |
| Sun 05 Oct | Chris Hoess | >Step 4 - slightly alter the molecule so it's patentable
>Step 5 - use marketing to compensate for inconvenient fact >that Step 4 made the molecule toxic and introduced a >number of dangerous side effects not present in the naturally >found substance
As a Chemical Biology grad student, I'd like to point out that this is Grade-A anti-corporate BS. Example: cyclosporin. Great immunosuppressant, horrible for your kidneys, 100% natural. Changing around functional groups on a natural product can make it more toxic, sure. It could also make a nasty natural product more tractable. The idea that natural products are good for people but altering them makes them bad is a ridiculously anthropocentric fallacy. |
| Sun 05 Oct | Dennis Atkins | So Chris, you are saying that that is NEVER the way it works? Altering natural substances that work and are safe simply to make them patentable ABSOLUTELY does not happen in the industry and those who claim so are simply spouting 'anti-corporate BS' against the pure and noble deeds of the pharmaceutical companies?
And I suppose when we notice that every single teenager who has gone on a murderous killing spree in the last twenty years was taking a SSRI... that's just a coincidence because those drugs are SAFE and EFFECTIVE and anyone who says otherwise is a wrong and should not be allowed to say such things? |
| Sun 05 Oct | T. Norman | Triple-dot, you need to start your own company. You're not going to get the intellectually interesting work you're looking for in a corporation. Unless you have a PhD and can get hired by one of the few companies that still do R&D. |
| Sun 05 Oct | fw | Well, you mentioned compilers for example, take operating sysetms, take web browsers, they are all still in development. Why not get involved in some open source projects, best yet, as soon as you have a good patch to fix bugs or add features, it'll be used.
Mozilla for browsers, gcc/tendra for compilers, the *bsd or linux or hurd kernels...Why not get involved with them? |
| Sun 05 Oct | . | > Why not get involved in some open source projects ...
Yeah, copying something else would sure be exciting. |
| Sun 05 Oct | Shlomi Fish | My first serious work as a programmer was quite exciting, where I had to implement a query system and a database from scratch. My second job was in a web-publishing company, but it too was very exciting because I learned about UNIX, Perl and other things. My third job, as a tester of software-based modems was also quite nice, albeit more tedious.
Since then, I've been studying for my first degree in Electrical Engineering, and also hacking on open source projects. Some of the projects I was involved in were very exciting: a solver for Freecell-like games, which ended up implementing many interesting data structures and algorithms; a first-come first-served readers/writers lock; I also translated the MikMod player to Java, which was quite tedious job, but the code itself was very interesting.
I think many open source projects now are very exciting and employ many interesting algorithms. Of course, most people are employed at writing in-house code of all types, which may or may not be exciting. |
| Sun 05 Oct | Mark Pearce | dot dot dot,
>> I used to be able to get jobs where there was some hairy mathematical/optimization thing no one could figure out, so I got to figure it out for them. <<
If you really want to match your intellect against a particularly challenging problem, you could do worse than trying to build a master-level chess program.
Contrary to popular opinion, chess is not a solved problem. It's true that the best programs currently available combine extremely clever tree-searching techniques with a moderate level of chess knowledge and some monster hardware. This devil's brew has created a few programs that can hold the world's top 10 GMs, and blow away everybody else.
But nobody has yet cracked the representation of extensive chess knowledge in a computer program, and allow that knowledge to be searched at high speed. If you can do that, you've solved a very difficult problem.
And if you're into complex software, programming chess algorithms is seriously mind-bending.
Mark |
| Sun 05 Oct | Mr Curiousity | 'If the easy problems have all been solved, why is there so much crappy unstable insecure software that is frustrating to use and doesn't do what I want?
...
As for me, I find it incredibly difficult to write stable software that users find intuitive. It's quite a challenge and not boring at all -- it seems to be an almost Sissyphian undertaking. Now I do understand that designing software that is stable and easy to use is quxte boring and easy for you smart folks out there.' - Dennis Atkins
That is an interesting point. There is no glory in writing stable intuitive software. It is laborious and mostly unrewarding work. Once the design is ready, it's mostly boring from that point on. As 'mythical man month' explains, it costs $1 total to have something for personal use, $3 total to make it suitable for larger audience, and $9 total to integrate it into a package with other such things for many users. That is a lot of dispersed effort with little reward at most steps, and little immediate gratification. And the joke is that then your customers end up being happy and don't return. So your intellectual rewards are 1) the initial design, and 2) the thought of a job well-done, may be few ingenious solutions along the way. Is that enough to keep one going while doing all the boring things? I do not know, I guess one needs 3) money, to really make it worthwhile.
Plus, what is intuitive? There is so much background info usually goes into 'intuitive', that you end up collecting lots of information to see what your users are like. The effort ends up being mostly external, where little is actually figured out by you. For me, no concentrated intellectual effort - no challenge.
Dealing with the users is for the most part dirty work as well. They mostly bitch and moan while there are problems. Once things work, they stop paying attention to and forget to express their appreciation. I know of some sysadmins staging outages just to make people realize how well things work most of the time. |
| Sun 05 Oct | Dennis Atkins | Curiosity, you make some great points. Perhaps this should be a topic on its own.
There are good critiques of bad designs out there by 'big names' but very little in the way of practical, usable, or even right-thinking advice. I recall the debacle of Donald Norman releasing an interactive ebook of his treatises on usability and the ebook that Norman designed was simply the worst and most unusable interface I've ever had the misfortune to be exposed to. To keep it short, he and many of the other big names have great criticisms but little in the way of practical advice.
Joel's book is quite good though and does combine interesting and thoughtful insights with practical advise. It's not perfect, but about as good as it gets in the UI scene.
Perhaps the best lab for learning UI design is to really think about good designs. Successful video games are one obvious example. Old standbys like TurboPascal are another. iTunes and iMovie are pretty nifty as well.
What's a great UI principle in one domain may be foolish in another -- a FPS game interface for a database is probably not the way to go. Or maybe it would if done right.
Two things that do work:
1. The best interfaces come from thoes who eat their own dog food.
A special case of this is when someone who is primarily a domain expert or even an artist and secondarily a developer creates the program.
2. You have to listen to the customers. Ignore what they are saying specifically though -- they don't know what the want. But they DO know when it's not what they want.
Silence is one form of communication -- silence from all users usually means they can't figure out your program's features. There aren't any crash and burn bugs so they can't say anything specifically bad, but the UI is so incomprehensible they don't know where to start. And they don't want to appear stupid in case the advice you give them is obvious (you need to turn it on first) so they just remain silent.
What's a good intuitive UI? You get that feedback from people who have *just now* bought the program. They email you after messing with it for a week and say 'I just want you to know that this is a fantastic interface and I am getting a thousand times more done than with the program of your idiot competitor. Keep up the good work.' You don't get too many of those emails, but when the interface is finally just right, you do get a few of them.
How to get there? The dog food yes.But also, every single time someone asks you a question about how to do something, you need to think about making the UI more obvious. Give some feedback. Make an animation or graphical preview pane. Replace a text field with a slider. Remove or hide an advanced function rarely used.
Ignore feedback from users requesting specific new features. Don't take their advice. Your UI will become a bloated incomprehensible mess if you do. But you should think about the needs behind the requests -- what are they really trying to do? Wait until you get a few similar requests and then figure the general principle behind them. Then think about the new feature. |
| Sun 05 Oct | Mr Curiousity | 'Bionformatics is writing programs for scientists
who are solving the real probem. Not sure if
that's what you have in mind.' - valraven
Well, not to rain on someone's parade, but triple-dot sentiment about bioinformatics/scientific programming appears to be in line with the notion that grass is greener on the other side.
People that write scientific programs in academic places are usually interested in the problems first, and programs - second. Once you start doing just the programming, you end up using prepackaged libraries/tools in order to satisfy user demand. If such work is diverse, it'll be more or less interesting. Otherwise you may end up with boring work in other domain of knowledge. You'll just reach the inevitable later.
To find something 'permanently' intellectually rewarding one should seek out tasks involved in content creation. Such as new ideas, new methods, new ways of looking at old things, art, etc. By definition, these things are new or novel, thus boredom is not an option.
And, try to stay away from being a 'service' guy to people who are involved in content creation. You either end up with working on fuzzy/poorly parsed ideas generated by others with little being done, or, you work for a great person with good ideas. In either case, you get little credit since you weren't the one coming up with the content.
Work for yourself. Either do things which can be boring but generate a lot of money, or, create content, and claim full credit for it. |
|
| Better Mousetraps | Sat 04 Oct | Portabella |
| So what are some great technologies, software or hardware or otherwise, that are better than the middle-of-the-road, wont-get-fired-for-choosing-it tech thats in popular use?
Id like to propose as rules for this thread:
1. Name the technology
2. Say why its better that its competitors
3. Objections on the basis of popularity are verboten: the whole point is to judge purely on technical and aesthetic grounds, not popularity or business considerations |
| Sat 04 Oct | Jack Kite | Borland Delphi
http://www.borland.com/delphi/
A RAD development enviromnent based on ObjectPascal. Excellent component architecture (better than the .NET one), true compiler which generates fast, tight Win32 executables.
MyIE 2 web browser
http://www.myie2.com/html_en/home.htm
Web browser based on Internet Explorer. It uses the Internet Explorer rendering engine, but it has an excellent interface with tabs, and many advanced features.
The Bat!
http://www.ritlabs.com/en/products/thebat/
Excellent no-nonsense e-mail client. Doesn't have a nice interface, but it's e-mail processing capabilities are unmatched.
Advanced Uninstaller
http://www.innovative-sol.com/
Modern uninstaller software utility, including privacy and clean-up functions. Can configure Internet Explorer plugins and stuff, and this way you can fix IE. |
| Sat 04 Oct | Philo | I have three issues with The Bat:
1) You can't filter on any headers but the short list of ones they give you. This precludes using spam proxy filters (which use custom headers to filter)
2) Their text editor is awful. Truly awful - it uses some kind of absolute positioning - wherever you click, that's where the cursor goes (as opposed to the end of the line); it dynamically inserts spaces to keep the cursor there. In addition I have yet to figure out how to reflow text - if you type a paragraph, it automatically wraps lines. If you then *edit* that paragraph, your lines are all out of kilter.
Since the text editor is where you spend most of your time in an email client, this is painful to the point that I'm thinking of switching clients again.
3) They recently released Version 2. They charge for the upgrade, but as of two weeks ago there was nothing on the website about what the upgrade changes. Queries on the website forum went unanswered.
Philo |
| Sat 04 Oct | Troy King | The great unknown email client is Becky at http://www.rimarts.co.jp/ . The web site for it sucks, but the email client is outstanding. The editor that comes with it is as good as some programmer's editors (even has column-mode editing and reformatting comands) and it has another feature that's outstanding -- it lets you choose your own editor.
It lets you filter on any header. It has 24 headers listed in its filter manager, and will also let you specify your own. It has a remote mail manager, threaded viewing, and a thriving plug-in community. A much better threaded view manager is available as a free third-party plug-in, and it works great and even lets you drag and drop messages into whichever thread you like.
It lets you specify whether to default to the HTML or plain-text view of messages (and will always let you switch between them while reading), and can disable scripts in HTML emails. You can set up multiple accounts on one inbox, or have multiple inboxes. You can set up different check intervals on each mailbox, and pause the checks easily. It supports flagging and color-coding of messages.
It also lets you do something I've never seen any other mail client do: It will let you edit received messages, including the subject line. I use that feature to take notes directly in an email if it requires a phone call for clarification. You can also schedule delivery of future emails, which is great for sending yourself reminders.
You can even just copy its install folder to back it up -- that makes it very easy to transfer from install to install or machine to machine. It also supports command-line arguments for certain commands, so I've assigned a CTRL-ALT-N Windows shortcut to it's 'new mail' command, which means I can create a new message from any program without having to switch to Becky first.
I could go on and on with its features. I've been using it for a couple years, and absolutely love it. The down-side is that it is a little complex, and a bit overwhelming when you first use it, but you grow into it. |
| Sat 04 Oct | Stephen Jones | The easiest file back-up program to use 'Second Copy'.
A fabulous program for windows 9* that allowed you to set security for users without the horrors of poledit. Called 'Security Wizard' and unfortunatley not only not updated, but the guy who wrote it has lost the name to another program. Who says there's justice in the world?
And on the subject of Win 98 utilities no longer needed with NT type OS's , 'Cacheman' (allows you to change the system cache without messing around with system.ini) and 'Freemem' memory manager - a godsend in the days when you were lucky to have 64MB of RAM.
'Free Extractor Wizard' creates self extracting zip files from standard zip files and allows you to program where they extract to, what messages you can give and what you do, all within 100KB. Truly a marvel!
Two of Stuart Rubenking's creations for ZDNet, StartUp Cop (still works with XP) and Regedit Plus ( which may or may not have been updated).
Jaws PDF creator, not because it is anything special but because it is free (I got it on a cover CD) and creates .pdf files simply by clicking on print.
There was also a beauty of a program whose name I've forgotten that allowed you to print booklets in Word.
None of these are hi-tech but then, nor is a mousetrap. What they do do, is let you do your work that little bit easier.
And a final mention for something in my fiield -'Hot Potatoes' - which allows you to write web based teaching exercises. Not great technology,; it was built in Javasript though later versions may have used Delphi, but it was developed by EFL teachers, not programmers, and, considering how awful commerical programs of its type are, worthy of a mention. |
| Sat 04 Oct | Ged Byrne | Rebol.
I've been playing with this for a week now, and I'm gobsmacked.
Really Rebol is just Lisp with a friendly syntax. Where I've been struggling to understand Lisp and how I might apply it to solving some real problems, Rebol just flows. Whole, useful applications can be built in hours. Amazing.
Its surprising that all of those oh so clever evengelical Lisp programmers have never thought of this.
Its also interesting that Rebol seems to try to hide its Lisp roots.
The other suprising thing is distribution. Usually these runtime languages are a nightmare to distribute. Java and .Net are the worse, but even Python and Ruby needs some effort installing the runtime.
With Rebol you can write an application and write it to a floppy with diskspace to spare. |
| Sat 04 Oct | JLGibbon | I also vote for the REBOL language ( http://www.rebol.com ): There are a few issues, however; REBOL isn't open source, the mix of features/functionality is somewhat hindered by a dogma of platform-independence, and the GUI needs work (and documentation).
I would add that the developer community is incredibly small, but that could change if it continues to attract smart, adventurous programmers. |
| Sat 04 Oct | Ori Berger | K (at [ http://kx.com ]) is an APL-derived language that matches Rebol on environment footprint, has lesser support for internet stuff, but blows any other language, REBOL included, in the terseness department. It's also competitive with C in terms of speed for most apps (especially those needing number crunchign and databases), even though it is interpreted. The whole interpreter + standard library + GUI is a 200k exe file for Windows. Alas, it too is not open source. |
| Sat 04 Oct | Ori Berger | An example of how amazing K is:
Problem: Compute the maximum-slice-sum of a vector v - that is, the maximum sum you can get by starting at an index, and summing some consequative numbers.
The trivial solution is two loops, one for the starting index, and one for the length - an O(n^2) solution. There is, however, an O(n) solution for this problem: Keep a running maximum of the sum so far, and replace it by zero every time it becomes negative. The largest sum encountered along the way is the solution. Proof that it yields the right answer is left as an exercise for the reader.
In K, this solution is written:
max_slice_sum: |/(0|+)\
Note that an abbreviated function _name_ is longer than the functions _definition_. This terseness is common in K; For example, a function that returns the average of a vector is written:
average:{(+/x)%#x}
Now to explain the meaning of both - first the average.
'+/x' means '+ continuously applies to all elements of x', specifically 'x[0] + x[1]) + x[2] + ... + x[n-1]'. It is made of two distinct tokens - '+' and '/'. The latter works on _any_ function, so, for example, ',/' concatenates all elements of a vector (',' is the concatenation operator in K). '*/' is a product of all elements of a vector. 'f/' applies f continuously, and is often useful, e.g. for running state machines.
'#x' means the length of x (read 'count x')
'%' means divide-by.
Now for the slice sum:
'+\x' is like '+/x', except it returns a vector of all partial results, so +\x is a vector containing (x[0], x[0]+x[1], x[0]+x[1]+x[2], ..., x[0] + ... + x[n-1]). The '\' operator is called 'scan'.
'|' is, in this context, the 'max' operator. 'a|b' is the maximum between 'a' and 'b'
'0|' locks '0' as the left argument of the max operator. So, it is a function of one argument, that returns a positive argument unmodified and zero for a negative argument.
'0|+' binds that function to '+' in the sense that if 'f' is the function '0|+' then 'f' applied to 'a' and 'b' is '0|(a+b)'.
Now we apply the 'scan' operator to this function, which means we continually sum elements, but zero each negative. The result of the scan is the list of all partial results along the way.
Now, we apply '|/' - 'max over', to compute the maximum in an anlogous way to the way '+/' computes the sum. And that is the result.
Long description, but it's just 8 characters. Each of this characters has a completely orthogonal meaning, and their combination yields the required algorithm. The language is not in any way optimized to solve this specific problem as a special case.
Another example: The function 'func:{[t;f;o]{x y z x}/[_n;o;t f]}' means either multicolumn 'select where' or multicolumn 'order by' on one table (in the SQL sense), depending on parameters, e.g, with the above definition,
func[table;`size;3<]
returns a table containing all rows of table with size > 3, without changing their order
func[table; `size; <]
returns all the rows of table sorted by size, and
func[table;`size`color`flavour;< ,`red~ , amazing]
returns the rows that have red color and that the function 'amazing' returns true on their flavour. It returns that list of rows sorted by size.
Yes, that function does all that, and it's actually quite verbose - it can equally be written
'func:{{x y z x}/[_n;z;x y]}' which is probably shorter than how it would have been named in any other language ('multicolumn_select_where_and_order_by' or something).
Explaining this function is beyond the scope of this post, but trust me, it DOES work, and it again builds on composition of entirely orthogonal structures.
Learn K. It takes time, but is well worth the effort.
A closing note: When I first looked at APL (that was back in the day; APL is an ancestor of K, and is not as terse and orthogonal, but is very close), the first example looked like the language was built for it. And the second one too. And the third. And the fifteenth. If you only look at two or three examples, it will look that way because our experience with C, Java and similar languages makes us believe that anything this short must be a specific hack. But once you get used to the power of the language, you start to question why all other languages are so needlessly verbose.
This [ http://nsl.com/k/t.k ] is an in-memory database written in K, that has insert/update/delete, select, order by, group by with aggregation operators (sum, average, count), and a random-table generator (for tests). It takes all of 16 lines, non of them longer than 80 chars, only one of them longer than 30 chars, at least two of the lines essentially redundant.
It's also very fast. The file contains an alternative implementation of the aggregation code which is simpler, shorter, and easier to understand, but is 4 times slower. |
| Sat 04 Oct | Ori Berger | P.S: The example above works on 'tables', but K actually has no 'table' type. It has C-like vectors, and associative arrays - and it can nest them to any dimension.
A table is usually implemented as a two dimensional array, one dimension being the numeric-index 'row', and the second dimension being the associative-index 'column'. |
| Sun 05 Oct | no name | Sorry, I fell asleep during that. |
| Sun 05 Oct | programming language junky | That's a real pitty. Although complicated at first, it was very interesting. |
|
| Yaml: Yanl Aint Markup Language. | Sat 04 Oct | Ged Byrne |
| Has anybody else tried YAML yet.
Its a lightweight alternative to XML that really makes a difference when editing those quick config files.
Rather than having to use a complex dom, or perplexing xslt, it loads straight into Perl, Python or Rubys existing Array and Hash structures.
http://www.yaml.org
Any thoughts on this one? |
| Sat 04 Oct | Portabella | I think it's great, and was surprised when I actually saw a .yml file in use (it was in the Apache::Gallery project).
That said,XML's ubiquitousness makes it the tool of choice for my professional work, in much the same way that Java and C# are preferred over Python and Ruby. It's not the merit of the tool -- the world is full of better mousetraps -- but the fact that its squarely middle of the road: good enough and popular enough.
I also like STX over XSLT (see http://www.xml.com/pub/a/2003/02/26/stx.html ), but again it'll have to gain more traction before I use ir professionally. |
| Sat 04 Oct | Dennis Atkins | I'm a YAML fan too and have been ever since XML got meme'd.
* It's far more readible than XML, which I think is one of the points of having a text based format. (That and portability.)
* It's far more writable than XML. XML should simply not be edited by hand since there's so much that can go wrong since the linear text stream representation does not match the hierarchical model of the data being encoded. In YAML, the format can't get all messed up since it is line based not stream based, allowing for a more native hierarchical presentation.
To summarize, XML sucks. YAML Rules. |
| Sat 04 Oct | Philo | ---
-
- PRIVMSG
- newUri
- '^http://.*'
-
- PRIVMSG
- deleteUri
- ^delete.*
-
- PRIVMSG
- randomUri
- ^random.*
?
Is there any provision in YAML for descriptors? The thing that's awesome about XML is that it's self-describing; in other words, you don't have to dig through documentation or the code to figure out what each tag is.
The other great thing about XML is the XML/XSL/XSD family, where with the proper tools (they're out there) it's trivially easy to manage, manipulate, and create data. With an XSD, you can either buy or write a parser to create a database structure, parser, and input form.
I suspect YAML is a solution in search of a problem...
Philo |
| Sat 04 Oct | Philo | BTW, I keep reading 'YAML' as 'Yet Another Markup Language,' which is my feeling about it. :-)
Philo |
Sat 04 Oct | Ged Byrne | I believe that the project start off as Yet Another ... buy they decided to go for Aint Mark Up.
I prefer it because lots of >s and
|
| Sat 04 Oct | Dennis Atkins | Hey Philo,
Just check out the examples in the spec for the answer to your question:
http://www.yaml.org/spec/
As far as the problem it solves, the problem is to create a portable, human readible, human writable, standard for representing data in text files. For that YAML fits the bill. |
| Sat 04 Oct | Philo | So does XML, and it adds 'established' and 'accepted'
Philo |
| Sat 04 Oct | Ori Berger | Philo, do you find writing an XSL script simpler than writing an equivalent process in your programming language of choice? If you do, it reflects more on your language-of-choice than on XSL, in my opinion.
I find Python does that a lot better than the XSL monstrosity; But I'll make my side of the argument simpler by arguing for Scheme instead:
The official XSL specification is, last time I looked, literally ten times longer than the complete R5RS scheme specification, even though the latter is considerably more powerful. Scheme implementations are more ubiquotous than XSL tools, yet transformation scripts are of comparable length.
Furthermore, there is a striking equivalence between Lisp S-experssions and well formed XML documents - to the extent that natural one-to-one mappings leave them almost unchanged. IMHO, the Lisp version is easier to edit with a text editor, the raison-de-etre for XML being a textual format. Oh, and S-expressions are nearly 50 years old.
The only advantage I see for XML compared to competing alternatives (EA-IFF, S-expr, YAML) is that it is an accepted syntax standard (for all the wrong reasons, but still -- a standard). |
| Sat 04 Oct | Dennis Atkins | Ah gee Philo, YAML's been around about as long as XML so it's just as established. And as far as accepted, well lot's of people use it. I guess you could make the same sort of argument for Fortran or C++ over Perl.
Is there something it particular you don't like about YAML or you just feel people shouldn't use it because it's not obtuse and error prone like XML, necessitating expensive consulting fees to get things straightened out ever time some hapless employee forgets to match an end tag and messes up an obese XML file. |
| Sat 04 Oct | Portabella | > I suspect YAML is a solution in search of a problem...
Nope. It's a new species trying to compete against a rival that's already occupying a large part of the ecological niche.
I think the point about schemas is also wrong-headed. Much of the markup in the world just doesn't need schemas: config files, log files, test data files, miscellaneous application data: none of this *needs* to be XML-ed, it's just that XML is the only popular choice for structured data.
I'd rather have it in XML than endless ad-hoc data formats, but I think it would even better to have it in a genuinely human-readable and human-editable format -- like YAML. |
| Sat 04 Oct | Philo | Whoa, look at the defensive FUD fly!
'YAML's been around about as long as XML so it's just as established.'
?
YAML's first implementation was 5/01. The XML draft working doc was published in 11/96. That's the entire cycle of the dotcom era, with the added impetus of XML growing into a vacuum.
Is there something I don't like about YAML? Yep - I hate with a passion people trying to fix something that isn't broken because they have a personal issue with it. From what I can see, your complaint with XML is 'it's got angle brackets and I don't like angle brackets'
'necessitating expensive consulting fees to get things straightened out ever time some hapless employee forgets to match an end tag and messes up an obese XML file'
As opposed to putting a Tab in a YAML file:
http://www.yaml.org/faq.html
'none of this *needs* to be XML-ed.'
Agreed. But then neither does it need to be YAML'd.
'I think it would even better to have it in a genuinely human-readable and human-editable format -- like YAML.'
Oh please. You honestly think it's easier to get your average keypunch operator to understand and deal with this:
http://www.yaml.org/start.html
?
I've been working with XML for almost two years now. Yeah, schemas and XSL were strange to deal with at first, but they're not THAT hard to get used to. The best part about XML is that people find it so very easy to work with. I've got *truck drivers* working with it. No, in general they don't write it, but they find it very easy to read.
And as for teaching non-geeks to write markup, I personally think matching tags vs. spaces and dashes to be six of one, half a dozen of the other.
My overall point again - there is a vast infrastructure of support and development tools for XML. I think trying to create a new markup is muddying the waters, and YAML doesn't give anything that XML doesn't have (apart from a chance for some people to champion the underdog against the evil oppressor).
My $.02. YMMV.
Philo |
| Sun 05 Oct | Wayne | I hate it when people make up stupid acronyms like this. I can't quite put my finger on why I don't like it, but it just annoys me. Like GNU (GNU's Not Unix).
And then there's this beauty of an answer for a (frequently asked??) question:
Tabs have been outlawed since they are treated differently by different editors and tools. And since indentation is so critical to proper interpretation of YAML, this issue is just too tricky to even attempt. Indeed Guido van Rossum of Python has acknowledged that allowing TABs in Python source is a headache for many people and that were he to design Python again, he would forbid them.
Ooookay, so you had to do some extra coding to work around Tabs. Naah, let's just not do that work and just make people forget about that nasty Tab key.
While we're at it, I hate it when I have to parse line feeds and carriage returns, so let's just make people write the stuff in one big line so I don't have to program that part!
I don't think I'll be using YAML any time soon. |
| Sun 05 Oct | Chris Hoess | 'While we're at it, I hate it when I have to parse line feeds and carriage returns, so let's just make people write the stuff in one big line so I don't have to program that part!'
That would be an attempt to work around Goldfarb's First Law. '... if a text processing system has bugs, at least one of them will have to do with the handling of input line endings.'
(The demise of SGML may prove instructive; SGML actually has very nice facilities for writing marked-up documents with a minimum of explicit markup, but the intellectual barrier of implementing these facilities in a parser and designing DTDs to make use of them ultimately proved too much of a challenge for adoptors. I think this has a lot to do with the slavish adherence to 'KISS' that shows up a lot in today's markup communities.) |
| Sun 05 Oct | Portabella | > Yep - I hate with a passion people trying to fix something that isn't broken because they have a personal issue with it.
A personal issue like trying to address what they see as flaws in it? I have no problem with personal issues like that.
And whether something is broken or not is a matter of opinion. I said in my first post that XML is good enough -- but not everyone wants to settle for good enough.
> As opposed to putting a Tab in a YAML file:
A mistake that's similar to these XML ones: forgetting to put in an end tag, or accidentally using two start tags instead of a start tag and an end tag or....
(You may replay that you won't make these mistakes with an XML editor. But I won't make the TAB mistake with YAML either, because I'll use the convert-tabs-to-spaces option in *my* editor. And even though we, smart guys that we are, won't make these mistakes, many other people will).
Many people objected to Python solely because of the way it uses whitespace, but I think it's now clear that it's a very powerful environment. The same is true of YAML.
> But then neither does it need to be YAML'd.
It needs to be manipulated programatically in a simple way, and YAML is a good choice for that. You say and I've have said that XML is good enough for these things, and so it is. But gack, the amazing amount of *bad XML manipulation code* that I've seen over the last few years really makes me want something more idiot proof. (and, yes, XML was a huge improvement over the junk I saw *before* XML).
> You honestly think it's easier to get your average keypunch operator to understand
This is a red herring, they won't understand either one.
I wouldn't claim to be an expert on what truck drivers can read, but I'd say that it's fairly likely that they can master either syntax. What you need to do is *design* the document (in either syntax) so that it's understandable to them.
And also, obviously, you'd comment either the document for your audience.
> apart from a chance for some people to champion the underdog against the evil oppressor
YAML appeals to some people's aesthetics for simplicity and power. I'm not *oppressed* by XML, for goodness sake: it's just a pain in the butt. If your aesthetics are, 'they're not THAT hard to get used to', then, yeah, you probably won't understand this.
And I'm in the process of ordering Eliot Rusty Harold's Effective XML now, so I'm well aware that I'll be working with XML for several years to come. |
| Sun 05 Oct | Peter da Silva | The problem with yaml is that indentation is a pain in the butt to edit and get right. The hierarchical language used by INN, BIND, and so on... is a lot cleaner and at least as easy to parse. The base object is similar: a keyword followed by keywords and strings. In addition, a keyword can be followed by a block:
> zone 'mydomain.com' {
> type 'slave';
> file 'db/mydomain.com.zone';
> masters {
> 10.0.0.1;
> 10.1.0.2;
> }
> }
[I hope that gets quoted right]
In INN it's less stringent: you don't need the semicolons.
Here's a general parser for the language:
http://sourceforge.net/projects/libtc |
| Sun 05 Oct | Dennis Atkins | Peter, I dig what you're saying, but I have to add here that YAML allows exactly the syntax you describe. It's called 'in-flow style'.
Here's the example from the spec:
Mark McGwire: {hr: 65, avg: 0.278}
Sammy Sosa: {hr: 63,
avg: 0.288} |
| Sun 05 Oct | Peter da Silva | The problem is that 'allows in-flow style' means that the parser has to be able to handle both styles, and the reader has to be prepared to read both styles. This is the same problem that you get every time you have a situation where someone comes up with a syntax that has some kind of problem, and then when people complain sets up an alternative syntax that avoids that problem.
Now you get 95% of the code using the original syntax, 5% using the new syntax, and 20% of the parsers only bothering with one because they're written for one project and the 'know' what they're going to see.
That's what ended up being the problem with SGML, and why we ended up throwing out the baby with the bathwater when formalizing it to XML. |
| Sun 05 Oct | Peter da Silva | By the way, since this is primarily a Microsoft developer's forum, even though I'm a UNIX guy I don't see anything wrong with this:
[homes]
comment = Home Directories
browseable = no
writable = yes
Unless you absolutely need nesting, a 2-level syntax for config files is plenty... and one that people are familiar with is even better.
For more complex config files, I tend to just plug an interpreter into the language and use that. Tcl, usually, because it's designed to be easy to plug in to C, and I can delegate the more complex parts of the parsing to a higher level language that's designed for writing config file metalanguages:
proc lease {name block} {
set current_lease_name $name
eval $block
}
proc start {time} {
upvar 1 current_lease_name name
set t [clock scan $time]
lease_set $name start $t
}
where lease_set is the internal C routine. Now all I have to provide in C is a couple of routines like lease_set that take pre-parsed strings, and a character array containing this minimal parser. Normal configuration is easy, and yu can also script more complex configuration in TCL.
Lisp is another good language for this, but people tend to find this:
lease '1060 w. Addison' {
start '3 oct 2003'
end '2 oct 2004'
}
easier than this:
(lease ''1060 W. Addison'
'((start '3 oct 2003')
(end '2 oct 2004')))
for some reason. :) There are other reflective languages that can be used, but it's hard to find portable embeddable implementations. |
| Sun 05 Oct | Philo | '> As opposed to putting a Tab in a YAML file:
A mistake that's similar to these XML ones: forgetting to put in an end tag, or accidentally using two start tags instead of a start tag and an end tag or....'
[shrug] Six of one, half a dozen of the other.
As I keep trying to say - I don't see YAML solving any problems without introducing similar ones. So it serves no purpose. Add in that XML has XSD and XSL (which are optional but available) and the panoply of XML tools available, and I simply see no value whatsoever in YAML.
Philo |
| Sun 05 Oct | Tayssir John Gabbour | There exist lisps that use whitespace instead of parentheses. Chaitin's lisp, for example. Many people even write in those whitespace lisps with pen & paper until they're done designing. Basically they just use parens (or braces, newlines, whatever) when necessary or comfortable.
If you're already comfortable with lisp, you might like this java applet simulating Chatin's lisp. http://www.cs.umaine.edu/~chaitin/unknowable/lisp.html
I only have a passing familiarity with these things, so I'm not doing more than just mentioning it. I don't care too much about the xml debate because you can just come up with different views of data if you don't like xml. |
|
| Specifications on a Laptop | Sat 04 Oct | Hardware Zero Knowledge |
| I bought an IBM ThinkPad. It says Centrino on the Laptop but when I go to Control Panel and click System, the following specs appears.
Intel Pentium M Processor 1500 MHz, 239 MHz
Is the above the same thing as Centrino? Will the above processor be sufficient for running databases etc?
Thanks. |
| Sat 04 Oct | www.marktaw.com | Sounds alright, how much RAM? |
| Sat 04 Oct | Hardware Zero Knowledge | RAM = 256 MB |
| Sat 04 Oct | Eponymous Biro | What do you mean by running databases, exactly? Developing applications with a database backend? In that case, I would opt for five hundred and twelve megabytes of RAM as a minimum, more if you can afford it. Especially if you are doing development targeted at the .NET framework and will be running the database server on the same machine / in a VM under the same machine. More RAM is essential if you're running something like Oracle/SQL Server/Sybase, etc. The processor spec. seems adequate, however.
One thing to check, sometimes the first thirty-two or sixty-four megabytes of memory on laptops is 'shared' memory and is used by the graphics card. So even though you have two hundred and fifty six megabytes of RAM, there is only one hundred and ninety two usable.
You don't say what operating system you will be running the databases under. Running (Start | Run) 'winver' will tell you how much physical memory is available to Windows. |
| Sat 04 Oct | Beth Linker | "Centrino" is the brand name for the Pentium M chips (the "M" is for mobile). |
| Sat 04 Oct | Li-fan Chen | If you develop on it, you'll need 512 to be more in line with what most developers find suitable for development. Most major IDEs, plus books on lines, plus Office, plus database.. will have trouble fitting themselves in 512. Unless you are a minimalist and run tiny IDEs and office suites and MySQL... you can't avoid having to upgrade your memory. In the case of a laptop.. you'll be happiest max-ing out your memory capability instead of having to upgrade once more--because everytime you upgrade you'll more likely have to throw some laptop memory away (compare to PCs.. where you can use it in a second pc, sell it again or give it to a friend). |
| Sat 04 Oct | Li-fan Chen | I have a laptop on the side that runs EditPlus (my mini'IDE'), no IIS, Sql Server 7.0 desktop on a Windows 98 laptop with 64 megs of ram.. with books online.. and I don't run big queries.
So if what you use is clearly minimalistic, don't worry about it. |
| Sat 04 Oct | Mickey Petersen | A for your information:
Keep in mind that Pentium-M processors have two speeds: One for speedstep(when you're on powersaver mode) and one for 'maximum performance' when you're using the AC/DC adapter. -- Some have more, but never mind that.
Some programs cannot determine(correctly) if it's one or the other; that is, in my case for instance, some programs report my speed as 1200 Mhz, whereas others (correctly) report it as 1800 Mhz. |
| Sat 04 Oct | Chris | You can develop database applications with MySQL for a database and things like perl or PHP for the actual coding and things like Apache for the webserver quite well on a lowly Pentium III 500Mhz with 256MB of RAM. I do it all the time. |
| Sat 04 Oct | Guy Incognito | I have a 3 year old HP laptop (P3-600 with 256 RAM) that I have SQL Server (Standard), IIS, WindowsXP, both Visual Studios installed on. At times it's a bit poky (VS.NET startup), but it's definitely doable.
That said... I'm looking to upgrade. :) |
| Sat 04 Oct | Stephen Jones | Centrino is the latest version of Pentium's mobile chip. It is completely different from the Pentium it is designed to eventually replace. It is the Pentium M's that have speedstep (mine for example does 1.6GHz on mains power and 1.2GHZ on battery). Mobile Athlons have an equivalent feature.
Centrino, has I believe only one speed, and as you can see it is much lower than that of a Pentium M. (now running at 2.4GHz or higher) let alone desktop Pentiums which run at over 3GHz.
The two advantages of Centrino are wifi buitl into the Motherboard and a very long battery liife (which explains the low specs). Intel claim you can get six or seven hours of battery life on normal use.
I'm a little surprised you would want to use one for development work, unless you live in a country with highly unreliable power supplies. |
| Sat 04 Oct | Robert Jacobson | >Centrino, has I believe only one speed, and as you can see it is much lower than that of a Pentium M. (now running at 2.4GHz or higher) let alone desktop Pentiums which run at over 3GHz.<
Centrino (Pentium M) clock speeds aren't directly comparable to Pentium 4 clock speeds -- Centrinos run much faster. For example, these benchmarks show a Pentium M 1.6 notebook running as fast, or faster, than a comparable notebook with a 2.2 Ghz Pentium 4 CPU.
www.tomshardware.com/mobile/20030205/index.html
I think a Pentium M would be great for a development notebook. (My notebook, with a slower Pentium 4 1.6 processor, does just fine with Visual Studio .Net.)
Hardware Zero Knowledge, I'm guessing that your notebook has two RAM chips of 128 MB each. You can do what I did -- replace one chip with a 512 MB chip -- and get a total of 640 MB, which should be sufficient. If you've got money to burn, go all the way to 1 GB of RAM. |
| Sat 04 Oct | Robert Jacobson | By the way, it's usually cheaper to buy memory upgrades from a third party, like Crucial.com, than from the manufacturer. Crucial has a handy memory configurator to tell you which type of RAM you need based on the make and model of your notebook. |
| Sun 05 Oct | Icelander | I think the reason that Centrino is as fast or faster than an older Pentium m that has a higher Ghz is because the Centrino chips have 1mb cache, whereas the old pentiums only had 512k and that makes up for the difference in hz. |
|
| Honeypot? | Fri 03 Oct | Mitch & Murray (from downtown) |
| Interesting discussions regarding the Half-Life source hijacking. Major questions on how secure a system connected to the net can really be.
Question: anyone here ever set up and run a honeypot? If so, can you give some idea as to the level of port scans a typical system connected to the Internet might see? Ive seen all kinds of annecdotal stories about an unprotected system attached to the net and in something like five or ten minutes it was somehow compromised.
Your experiences? |
| Sat 04 Oct | Andrew Hurst | I used to log my firewall connections on a dsl line. I got portscanned once every week or so, max. But I wasn't on a large well known network.
On my new cable modem, the transfer light is always blinking out of control, even if I unplug everything from the output of the cable modem. I would assume a fair amount of that traffic is malicious.
At UC Davis, to add more anecdotal stories, there was a guy (old coworker) that installed RedHat linux to four computers, for a class on securing them. He did this at about 8:30am or so. By the time the class started at 10, they were all rooted.
The more well-known the network you're on, the more bad traffic you're going to see.
My opinion, is that its like playing Roulette if you want to leave an un-firewalled and un-patched system on the network. |
| Sat 04 Oct | Paulo Caetano | I can't really help you here, but I will add another twist to the subject. The first time I read about honeypots, the big problem mentioned wasn't technical, but legal.
I can't find the article, but the first hit on a google search by «honeypot legal» was this:
http://www.securityfocus.com/infocus/1703 |
| Sat 04 Oct | Karl | See The HoneyNet Project at http://project.honeynet.org/ for info on Honeypots. There are several whitepapers on 'Know your enemy...' that are interesting. |
| Sat 04 Oct | Eponymous Biro | I agree with a comment made by a previous poster about the type of network you're on being a contributing factor the number of scans one received.
Being resident on a broadband network guarantees lots of scans. I rarely see a full port scan on my systems (cable 'modem' at home and ADSL at work), usually only a few ports are probed (21,25,80,135,137-139 and 445 (netbios) along with some others commonly used for trojans)
I do see a lot of what I presume to be automated web scanning scripts looking for well known IIS holes.
Quite a lot of work on honeypots was/is done by Lance Spitzner, ex-US Army personnel. If you're interested his websites ( http://www.honeynet.org and http://www.spitzner.net ) have a lot of his research papers, tools, etc.
I have run a honeypot on my home connection at times, it's interesting to see some of the nefarious uses the people who compromise the box put it to. It can be quite a balancing act to make the honeypot not too much trouble (and hence worth the effort) for someone experienced whilst keeping the script kiddies out. Case in point: http://www.theregister.co.uk/content/55/31707.html |
| Sat 04 Oct | d | Educational institutions seem to be a big target. The computer science faculty of my alma matter blocks all incoming connections from .ru and a dozen other domains to the undergraduate computer. There was a basically stock RedHat box set up for a programming competition and it was hacked. I know of one other computer that someone took a pass at, but the network administrators noticed the strange traffic and unplugged it. However, it's very random. There are dozens of completely unprotected boxes that never get touched.
Having a high speed link isn't always a guarantee of constant hack attempts. Smaller companies and non-US companies can have much less problems. I logged my cable modem for a while and the only unwanted traffic I ever got was Windows networking packets from someone else on the cable loop. |
| Sat 04 Oct | coresi | I have a cable modem and I installed ZoneAlarm before buying a Linksys router. I had a number of ports probed every evening when my computer was on. ZoneAlarm reported no more attempts after I installed Linksys. |
| Sat 04 Oct | fw | Sorry not to have the 'new way of thinking' about honeypots, but unless you have the resources to watch them carefully, do research and justify the time and costs involved, then ignore it.
Think about what value it will bring, and how much resources it will take. |
| Sun 05 Oct | Eponymous Biro | fw has a fair point.
Working in the IS security department I have more than a superficial interest. Your honeypot could potentially be put to uses that land you in hot water with your ISP. I have never run a honeypot at work as there is no need, and I certainly wouldn't consider it 'taking the initiative' to set one up.
One could obviously restrict the outbound connections that can be made from the machine, but it's not something to run on a whim. The honeypot needs to be properly isolated from the rest of your machines or you could get more than you bargained for. |
|
| How many developers here write test before coding | Fri 03 Oct | Ram Dass |
| I have been reading on JUnit and Eclipse. And also working on a little projects to get my hands dirty...and basically try to understand all the quirks with J2EE.
I have not used XP programming methodology before. I hear people talking about it but not actually witness people using them.
I was wondering how faithfully do developers follow the XP requirement of writing test cases first before coding.
My experiend in using JUnit with Eclipse has been not ver favourable. Perhaps I need more practice. I find myself getting stuck in getting the test setup - not because I do not know what to code but it is a pain to use JUnit.
This, of course, can be due to my inexperience. Can any posters share their thoughts on using JUnit/Eclipse or the test first code later methodology? |
| Fri 03 Oct | Scot | It is hard to make the transition, but once you do you will be amazed at how much more malleable and well-factored the code turns out.
A great resource that explains in much more detail how to get started is 'Test-Driven Development' by Beck. |
| Fri 03 Oct | Scot | Not that I explained it in any detail :-) |
| Fri 03 Oct | Portabella | I write TDD when I can, because the code is generally:
* finished more quickly
* higher quality
* easier to regression test
However, not all development is 'green field' (ie, new code) and it may be difficult to use TDD when you are working with legacy code. Typically this is because of political pressure to 'just get the changes done quickly and not break too many things'.
This fear has some basis in reality: while it may be the best approach long-term to refactor the code and establish a test suite, in the short term many things are likely to break en route from here to there; or, if you are very very careful to not break anything, development may be much slower than management cares for.
A second place where TDD is difficult are frameworks, application containers, and heavy use of outboard systems (especially databases).
Many frameworks are simply not designed with testing in mind.
Application servers can make TDD tedious and impractical: either you have to find a special testing framework, or you have to do an awkward 3 step:
1 code
2 cycle the app server
3 run the test
repeat
It can be difficult to use TDD with databases for many of the same reasons. Often you need a live database connection to run the test, and you, the developer, may not have enough control of the DB to set it up for the test appropriately.
You can, however, change things around to simulate the data from the DB, and test your business logic with that. While that's all well and good and recommended, often using the real DB bites you anyway.
Good luck! |
| Fri 03 Oct | somebody | I write code, test, and documentation all at the
same time. The intent comes first and unites
all three. |
| Fri 03 Oct | Ram Dass | Portabella - thanks for your post. If you have time, you must try writing a manual on TDD. It was very nice to read a succint and insightful post as yours. |
| Fri 03 Oct | mackinac | For new code I generally write some sort of test driver along with the deliverable code. I have been doing this since before anyone thought of XP. I am not sure how one would develop code without testing. |
| Fri 03 Oct | Li-fan Chen | I don't write it before hand (still haven't caught on to XP hehe), but it comes soon after any partial functionality is completed. Usually I try to prototype and document requirements beforehand. Sometimes I have to throw away crap because I didn't architect or code up to the standard I try to maintain. The only exception is when things just don't go your way--like exceptional time and money constrains. Good always do better :-) |
| Fri 03 Oct | Jen | All developers should write a test before coding. If you write a test plan before you code, you may find defects in the requirements or design before you waste your time with a single line of code. If you know how you plan to test your program, you will understand better how to write it. |
| Sat 04 Oct | Gerrie Swart | I write tests first, and JUnit is a pain to set-up :)
I ended up realising one day that, hell, I'm writing little scripts all over the friggin place to test. Normally my tests go something like (fictional e.g. only, for the pedantics ;), insert [a,b,c,d,n] into the DB, and I'd give it a squiz to see whether it acts as calculated. And then I'd stick this test in some directory 738 million levels down, just to have incredible difficulty to find it later on.
Well, the logical course was followed, and those tests are now in some unit testing framework (notable NUnit and JUnit). All guys here have adopted it, and we are now a little more strict about writing the text first before the actual method implementation. This works, because the test acts a very detailed spec of what the functionality should be, and the method as an implementation of that spec.
Cannot remember who said this, but the source code is the most detailed description of the required functionality. In the spirit of this tests become a slightly higher level description of what is required. Tests force you to THINK before you touch that method.
It is also actually shocking how useful the unit tests become. It is a matter of practice to make them useful, but as a general rule any unit test consists (at least) of:
- a test using common parameters / set-up (everyday situation)
- a test using rare parameters ('sorry miss, but my dog ate grandma, and she bled over the sofa and as you know I store my homework underneath it's cushions so I can't hand it in today' - type input).
Conceivable, but rare situations (e.g. negative numbers for a process that generally gets positive ones, empty strings for you know when, strings consisting of only whitespace (sMyString.Trim() != 0 versus sMyString.length != 0) errors and so forth in here).
- a test that uses downright wrong parameters and expects an exception. Check exception type and error message.
A set of tests like this simplifies any changes enormously - if your boss waltzes in and demands that a donkey polisher must be added, the test helps with ensuring that the polisher didn't subtly break any other strange thing.
As to XP practices, we don’t strictly hold by everything XP specifies. But certain things happen naturally (like pair programming) and this is encouraged. Pair programming does seem to increase quality, but we have not yet used any measurable test to determine whether this is true, so it might just be a subjective view because I like the ideas in XP :) |
| Sat 04 Oct | Gerrie Swart | Ugh, dammit the
'sMyString.Trim() != 0 versus sMyString.length != 0'-line
should read
'sMyString.Trim().length != 0 versus sMyString.length != 0'
also: is not meant as language specific :)
It is saturday morning, after a long friday night, so sorry about any typos I don't notice right now...
--kill the bright lights-- ;) |
| Sun 05 Oct | peter renshaw | I do but I'll caveat it by saying I write a description of the tests before I write the code trying to see if I can cover all the cases the code may fail.
*write psuedo code
*write psuedo testcode
*write actual code
*use custome code parser to generate test stubs on
class/methods
*fillout stubs fleshing out psuedo testcode.
I've seen it written on XP and I practice that you should write a bit of code then write the test code but I found thinking about testing before hand could make you aware of traps.
depending on the code defensive code + testcode certainly improves productivity. Now to nail the architecture so I dont make some fundamental stuffups :) |
|
| Next version of Delphi = .NET only | Fri 03 Oct | Mitch & Murray (from downtown) |
| There is a major stink going on over at the Borland Delphi newsgroups. Borland has just told the world that the next version of their popular RAD Pascal development tool Delphi will target .NET only - no Win32 API support at all, no native Win32 app development possible. They will be releasing this thing by the end of the year.
My question to this esteemed group: is this crazy, or does .NET really have that much traction in the deployment plans of developers? |
| Fri 03 Oct | Philo | This is insane. Right now I'm still eying Delphi for some personal projects because I want the static linking. If I want a .Net language, I'll use VS.Net.
Borland has made a strong step forward in proving that it is one of the most clueless companies in the IT field.
Philo |
| Fri 03 Oct | no name | I thought they might've grabbed a lot of dissatisfied VB users that didn't want to switch to .NET and the .NET runtime.
Guess I'm not as smart as I thought. |
| Fri 03 Oct | no name | I'm still trying to wrap my head around this. Having a product that could target .Net, Win32, and Linux would be a real competitive advantage. Assuming they keep their current pricing structure, for the price of the Delphi for .Net only, I could get an MSDN subscription. If I'm doing Windows development, that's not a tough choice to make. |
| Fri 03 Oct | Li-fan Chen | I think they should go .Net. I am just curious how they will maintain the ability to have multiple target platforms (x86 Linux, x86 Windows .Net, Apple PowerPC) once dotnet is supported. |
| Fri 03 Oct | Nick | Re-read Borland's letter. The sky is not falling.
They're not dropping Win32 at all. They have just focused 100% of their development efforts on supporting .Net. The existing support for Win32 remains. They go on to state that they will make improvements for Win32 in future releases. |
| Fri 03 Oct | Leonardo Herrera | That was my impression, too. Read the letter here:
http://bdn.borland.com/article/0,1410,29951,00.html |
| Fri 03 Oct | Mitch & Murray (from downtown) | Win32 support will not be in the next version of Delphi. Trust me.
That letter is not exactly succinct. It only implies that at some future time Win32 support may be available in a future product.
Not this one though. |
| Fri 03 Oct | Robert Jacobson | I have a hard time believing that it won't support API calls. I'm a true believer in VB.Net and the .Net Framework approach, but every so often you still need to rely make an API call for some obscure functionality. |
| Fri 03 Oct | no name | The letter says that Win32 support remains. It is just that all their development focus is on .Net for the next version. |
| Fri 03 Oct | mb | you can already make an API call on .NET with platform invoke. |
| Fri 03 Oct | Mitch & Murray (from downtown) | 'you can already make an API call on .NET with platform invoke.'
Not if the .NET CLR is not installed. |
| Sat 04 Oct | HeWhoMustBeConfused | Earlier this year I contemplated using Delphi for some fat client development work (most of our work is delivered through browser clients). Now I'm really glad that I decided to go with RealBASIC instead.
.NET sucks like a Miele vacuum cleaner. 20Mb runtimes, memory consumption almost as bad as Java, performance that NEEDS gigahertz processors for tasks that used to run just fine on 166Mhz pentiums. Forget it. |
| Sat 04 Oct | Brian | Wow, Borland is a short-sighted company. First they kill the usefullness of their Basic Delphi edition. Now they are killing the Profession edition. Who is going to feed into their enterprise customer line?
I just purchased a copy of Delphi 7.0 pro specifcally for the statically-linkable easy GUI creation (backend is all portable C++). Why didn't I just use WinForms and C#? Well...because who in there right mind would ship an end-user application that requires a 20+MB runtime and can be decompiled into source code by anybody with the SDK?
.Net is a great idea for corporate and web apps, but... anyone who has delt with the dependency issues involved with large runtime-based systems built on VB or Java know that you want to support that mess on as few systems as possible. |
| Sat 04 Oct | Bored Bystander | The funny thing about Borland's inept and ineffective courting of PhB vanity is that 20 years ago, Borland was launched as a lean, mean, economical, highly effective alternative to the very expensive and ponderous compilers that existed for the Z-80s (Kaypro & Osborne) and early PCs. Tools like Microsoft's Pascal were expensive and sucked eggs; I recall 'Lattice C' for something like $1000.
Turbo Pascal (which is the backreference meant when the Delphi command line compiler spits out 'Copyright 1983-200x') was a compact language+IDE that sold for like $50 in '83. I bought a copy, and the thing I immediately noticed was that compile times of comparable programs were similar on my Kaypro and on the VAX at work.
Borland has to be the classical example of talented geeks utterly disconnected from reality dominated by wishful thinking vapid marketing gonads who have absolutely no clue or intuition about tech.
Excuse the rant. It's like the Titanic going down. And it really pisses me off. Even more so than a lot of things do. |
| Sat 04 Oct | Sunish | Don't spread FUD. Borland IS SUPPORTING Win32 in its next releases of Delphi. AFAIK from the newsgroups. |
| Sat 04 Oct | Sunish | Here's the latest from John Kaster
I just got done speaking to Simon Thornhill, and we are updating the
open letter and the Q&A regarding Octane.
There are 4 pieces of information I have been authorized to provide that
will also be in the updated documents:
1. Delphi 7 will be bundled with Octane
2. There will be an update to Delphi for Win32 after Octane ships
3. If you purchase software assurance for the Octane release of Delphi,
you will continue to receive updates to both the .NET and Win32 versions
of Delphi as Borland produces them. This applies as long as you are up
to date with your software assurance for Delphi. It may not apply if
your software assurance lapses
4. In addition to points 1 and 2 above being added to the Octane open
letter, the Octane Q&A will be updated to answer the questions Bob
Dawson posted in the netpreview newsgroup
For further details on these points, you will have to wait for the
updated Open Letter and Q&A
Follow-ups go to borland.public.delphi.non-technical, since this mainly
pertains to new information on the Win32 version of Delphi
--
John Kaster, Borland Developer Relations, http://bdn.borland.com
Don't miss the best BorCon ever! http://info.borland.com/conf2003/
Add a feature/Fix a bug: http://qc.borland.com
Get source: http://codecentral.borland.com |
| Sat 04 Oct | Paulo Caetano | This sort of stuff has happened a few times. They issue a fancy statement, and then, when they see the reaction, they come around saying 'Here is what we were really trying to say...'. Usually smells of back-pedalling.
As for .NET, if its performance is anything like Java, I'd stay away from it for desktop apps (although, in a couple of years that probably |