* ALL sweeteners, regardless of their source or chemical composition, trigger insulin production in the same way that sugar does. This is a reflexive response, where the body ramps up insulin production in response to the *taste* of sweet, not waiting until blood sugar actually goes up. This results in lower blood sugar levels in response to non-nutritive sweeteners, which induces hunger and sugar/carb cravings. This is why switching to diet soda from regular causes weight *gain* rather than loss in often-replicated studies.
Citation or reference? I'm not doubting you---I honestly want to read more about this phenomenon.
I keep seeing new boards like this come out, hoping one will have all the features I want for an ideal NAS (network attached storage) build. Right now, there is always some trade-off for what I want. Show me the board that has...
Support for ECC RAM. AFAIK, all modern AMD CPUs all support ECC RAM. Seems like AMD should be able to make something that competes with the Atom on the low-wattage side of things. A full-blown 4850e or even Sempron is overkill.
At least six SATA ports. Eight to 10 would be perfect. Modern Intel (ICH10) and AMD (SB700) chipsets seem to max out at six SATA ports. And Intel likes to pair the Atom with even older chipsets (ICH7 I think) that support at most four SATA ports.
A PCIe x16 slot. Not necessary if and only if the motherboard has everything needed integrated. This requirement is really just a stop-gap, assuming the board itself will lack some crucial feature. Or for providing for unforseen future expansion.
A built-in compact flash slot. My understanding is that PATA and CF are closely related (one is a subset of the other maybe?)... in this day and age, I would imagine PATA controllers are dirt cheap. But the idea is to use CF as the system drive, i.e. the place to hold the OS and config files. (You could also use USB + thumb drive, so as a compromise I'd settle for an on-board USB socket into which a thumb drive can be directly plugged.)
At least one Gigabit LAN port, preferably a high quality controller like Intel makes. Two Gigabit ports for bonding would be ideal.
Super-low power CPU. The load on this machine will be virtually all I/O. Intel Atom, AMD Geode, or even ARM should suffice.
Chipset with sufficient IO muscle and integrated video without the high power consumption. The chipset Intel is supplying with the Atom is awful from a power consumption perspective (actually, none of Intel's chipsets are particularly low-power). AMD's 740G and 780G look decent, but still have way over-powered video. Super old school, VGA only video is sufficient. I'd even be happy with serial console only.
One board comes close: the VIA NAS 7800, but it doesn't appear to be available to the general public. And I don't see anything about supporting ECC memory. For no reason other than hearsay, I'm not so sure I'd trust important data to a Via chipset.
The next best, IMO (and I actually have one of these), is the Gigabyte GA-MA74GM-S2. Check out SilentPCReview's writeup on this board. Only problem: I'm not sure if it supports ECC or not (AMD CPUs do, but I've heard it still requires the motherboard vendor to enable it). One annoying problem is that the PCIe x16 slot is for video only---you can't put a SATA controller card, extra NIC or anything else useful to a NAS in there. Still, while it's a very low-power board when paired with the right CPU, it's still overkill for a NAS. In general, I think the power draw for a NAS (excluding the hard drives) should be under 15 Watts.
The Point of View Ion/Atom board linked above looks promising. But, as far as I can see, no compact flash, and probably no ECC memory support.
I have two home-built servers: one is an always-on, live NAS; the other is a backup server that I power on only to do backups (or restores if it comes to that). First rule I go by: always use the slower 5400 RPM drives, such as the Western Digital "Green" or the Samsung EcoGreen. For both media streaming and backup purposes, these hard drives are still plenty fast. The biggest benefit, though, is that they use less energy (particularly important if your system is always on), and don't get as hot, making cooling much easier (which usually also translates to quieter).
My live server is currently 4 x 1TB drives in RAID-5, using Linux software RAID. (I know RAID is no substitute for backup, but I still consider it "quasi" backup. But I also have real backup.) This system is fairly un-interesting: it's your typical DIY NAS.
The backup server is housed in the Norco RPC-4020. For $300, you get 24 SATA hot-swap bays. That price is hard to beat. I haven't filled this case up with drives yet, and I have plenty of physical space going forward. The hardware is just some unused spare components I had lying around. Extra SATA ports are provided by the Supermicro AOC-SAT2-MV8 (which works fine in "regular" 32-bit PCI slots).
This, IMO, is a pretty simple set up. I just power up the backup server whenever I need it, and turn it off when I'm done. I don't care about performance, since backups are always run as a batch job (typically over night).
Before I bought that Norco case, I was just using individual drives with a Thermaltake BlacX SATA-to-USB hard drive docking station. This is cheaper, just slightly less convenient. I did order 50 "zip lock"-style anti-static bags for $13. I ordered them from staticbags.com ("GRC Enterprises" was listed on my invoice). After I copied data to the drive and put it in an anti-static bag, I just added it to the stack of drives I had on my bookshelf. The Norco case definitely looks better!:)
All in all, I consider my system fairly robust. It's only semi-secure against my stupidity, and since its all housed in the apartment, does not safeguard against fire. But since the media rips are just copies of DVDs I actually own, my insurance policy becomes the ultimate backup.
My recommendation is to avoid hiring the obvious jerks, and treat the ones who get through with decency and respect, while both challenging them and mentoring them to the challenge (not as hard as you think), and you'll get more than your money's worth.
That's a refreshing viewpoint. I don't see this attitude advertised too often; I'm not sure if I'm looking in the wrong places, or it truly is rare.
I've worked two "real" jobs since graduating college about seven years ago. I was assigned a mentor at the first place who really helped me understand the business, the big picture, always took time to answer my questions, helped me when I got stuck, etc. The job itself was "just ok", but I honestly feel that I was imbued with a higher degree of engagement thanks to the quality coaching I received early on---that itself was enough to turn a "just ok" job into a pretty interesting one.
In contrast, my current job was basically "sink or swim" when I started. I've been here almost three years, and never developed half the enthusiasm I had at the old job. The environment I'm in now views any kind of coaching or mentoring as "hand-holding"---if someone needs more than a few sentences' of instruction, they're no good.
[...] The reason why the HDHomeRun isn't coupon-eligible is its lack of an RF output
Sounds like a business opportunity for Silicon Dust. I wonder how hard it would be for them to graft an RF output onto their device? They they could advertise it as being coupon-eligible. If I could get $40 off, I'd go buy another one! Really, if they made the device coupon-eligible, then you'd have a cool device that's exactly what the topic starter wanted!
Not quite what you asked for, and I don't know if you can use your coupon (I'm guessing not)... but the HDHomeRun allows you two capture MPEG streams. It integrates well with MythTV. It has an open source library. Pretty sweet little device in my opinion.
For anything but dialup accounts, there's nothing to it. Most OS's come set up for DHCP on the ethernet. Plug the cable in, turn it on, and you're done.
I've had at least one ISP where they had to get the MAC address of whatever you plugged into their modem before it would work. I think this was with Ameritech (who I believe have now been swallowed up by AT&T) DSL. That was one thing the "magic CD" did for you: you ran it, and it went to some special address and registered your MAC address. And if you didn't have Windows (or didn't want to reverse engineer what the CD software did), you had to call and pray you got someone kind enough to help you out. At least half would just say, "Sorry, we only support Windows." After going through this once or twice, I learned exactly what to say to get my stuff working, but it was painful getting there. This situation may have improved, as this was several years ago.
I used to pride myself on that fact, because I feel I am good at working with others. But based on what I've seen in the trading industry, working with others is a secondary concern to being able to write working code. In fact, if you can write code that works, that's practically all that matters.
Case in point, the guy I work with. To me, the best programmer-employee is one who ranks high on all the following attributes: writes code that works; self-motivated; works well with others; good architecture and software engineering skills; is consistent in his approach to writing code; writes readable code that others can use; communicates well (both understanding requirements and vocalizing what he's done)... few people probably excel in all categories, but the guy I work with is a zero in all but the "writes code that works" category. At the end of the day, his code is helping us make money. But communicating to him what needs to be done is a painful, labor-intensive process; understanding what he's done is an exercise in patience and frustration management (both looking at his code and asking him what his stuff does is painful); and he won't do much of anything unless continually prodded.
I had no papers to my name, and I started at 68,000 which got bumped to 73,000 on my 30 day review. And it was in '97. I did have a couple of solo programming projects, and an internship at an evil corporation...
I say an MIT grad could get 60k with a bit of effort.
What geographical location was/is that? At least in the US, in some parts of the country, $70k is an extremely comfortable salary; in others, it's near poverty level.
It appears to me that the finance/trading industry is still going fairly strong, i.e. still has a lot of job opportunities. I'm not actively looking for a job, but I have my resume out there, as well as a LinkedIn page (I figure it's always good to at least be "passively" looking for a better opportunity). I receive emails from recruiters/head hunters about once a week on average. Most of the opportunities are basically doing exactly what I'm doing now: connectivity/infrastructure development for a trading company.
Granted, the topic starter was asking about system administrator-type jobs, but presumably, the companies that need developers probably also need good admins.
Now, bad news. At least with my employer, we are basically only looking for people with previous experience. "Training" is not in our vocabulary. Effectively, we are only willing to consider people who can come in and start delivering excellent work with a minimum of support and direction.
My previous job was at a huge corporation, where they hired more on personality "type" and believed training would solve any knowledge or skill deficiencies.
Obviously, the ideal employee has experience that is a perfect match with job requirements and has the right personality. But realistically, these people are incredibly hard to find. And how long is a firm willing to wait to find these magical people?
So my question is: do companies still offer training programs? I've seen this attitude here on Slashdot that it's lazy to expect training from an employer, that one should be willing to put in the extra effort to come up to speed on whatever knowledge or skill the job demands on one's own time.
And another, related question is: even if companies aren't taking the time to explicitly train new hires, are they at least allowing time to "grow" and/or mentor employees? Looking only at the firm where I now work, I'm afraid that answer is a hard "no". That not only do you need exceptional experience to even get in the door, but once in, you're almost entirely on your own: someone will tell you what needs to be done and expect you to get it done.
I don't like the "sink or swim" mentality; frankly, it's kind of scary. But I think that huge training programs and hand-holding are probably low on the value scale. For me, there's a happy medium: I'm willing to put in extra hours to learn the technology and develop the skills I need, if the employer is willing to spend some time coaching me in the nature of the business, helping me learn the whys behind the things they do, the business models, the firm's culture and values, etc. I think that's a fair trade. But my experience at my current firm, and based at least on what I've heard of similar companies, they don't even take the time to properly introduce the company, i.e. the go by the "trial by fire" method of employee indoctrination. Is this unique to the trading industry, or is this just the way it is now?
Honest question: how does git compare to Clearcase? I ask because we used Clearcase at my previous job. I have fairly vivid memories of cursing it at the time. I started using svn for small projects at home and thought it was the best thing ever. In my current job we use svn as well; it's a small team, and the majority of modules have explicit ownership by a single person.
Anyway, I watched that video of Linus talking about git, and reading many of the posts here, I think it sounds really cool. But if my memory is correct, it seems like Clearcase can do many of the same things. The problem I saw with Clearcase, though, was more of a policy program. There was a tremendous amount of code history from people who had no business using any revision control system in the first place. Then there were histories of different peoples' ideologies on how source should be managed. Finally, while I was there, we had a guy come into our group who, in my opinion, had a really sane approach to Clearcase usage. Basically, the best practices he preached made our Clearcase usage look a lot like the good parts of git that everyone talks about. But still, to have sanity in Clearcase, it required that everyone follow the best practices, i.e. a policy matter. Too many people either didn't understand the rational behind the policy, were too stubborn to do it any way but their own, or simply made too many mistakes trying to keep up with the rules of the best practices.
Also, CC was dreadfully slow---everyone talks about how git is faster than svn, and svn is definitely faster than Clearcase (in my experience anyway).
Another area where we struggled was integrating the offshore development team into our Clearcase environment. I am guessing that git is fairly open by design---how does it fare for distributed groups for proprietary development (i.e. where the code needs to be kept secret)? CC may have improved, but when I was there, the offshore team had to use this Clearcase Web program that had limited functionality that couldn't even do everything we needed to maintain said sane policies mentioned above. I remember the offshore team checking code in, then I would go through and re-work the revision history to make it adhere to our policy. (This is about the time I left for a new job.)
Anyway, I'm not trying to promote Clearcase in anyway---I just wonder how it differs from git. And, even if it is fundamentally different, it looks like CC can somewhat be hammered into acting like git in some (perhaps scary) way.
Final question: the git method (as I understand it) certainly makes a lot of sense. But what about for developers who "don't get it"? It seems like it would be easy in such a de-centralized system to bung things up pretty bad for everyone else. I.e., how is sane usage policy enforced?
I graduated with a bachelor's in CS in December, 2001. My first job was for a huge manufacturing company. It was like a three-pronged fork: I did training, development, and support. We had a custom in-house application: an enhancement or "plugin" to a solid modeling application (Pro/ENGINEER). I was on a team of three, taking support calls, developing enhancements, bugfixing, and even going on-site to give a two-day training class.
That job was pretty fun, at least for the first few years. Towards the end of my five-year tenure there, I became less of a coder and more of a "project manager". Getting a step closer to management revealed more bureaucracy to me, and it started to get frustrating. I started thinking about some kind of internal transfer, when a friend called with an opportunity: come work with him at the trading firm he and another guy were starting.
So here I am, two years into the trading gig. In the parlance of this industry, I am a "connectivity developer". As our business grows and expands, I basically write the same programs over and over again: one to provide market data to the trading logic, and one to manage orders. I more or less "code all day".
I took the job because I wanted to do more development---in my previous job I felt I was getting too far away from the code, and wanted to stay more technical. What I found when I got here, though, is that spending the first five years not doing "hard core" coding (i.e., only spending about half my time actually programming) made me a weaker programmer than I thought myself to be. Perhaps another perspective is that the trading industry simply demands better coders---I have definitely improved since working here.
One of my points in all this is that you said, "I don't think I would particularly love to write code all day for a living either." I interpreted that as some coding is OK, not just all day every day. And my first job basically was just that---some coding.
This isn't exactly what you specified, but you ought to look into development jobs in small trading or financial firms.
Many of them want C++ coders, but there is some demand for Java folks.
Why I suggest this: in my experience, the trading/financial industry pays more---potentially a lot more when bonuses are taken into consideration. If you find a small trading firm that is profitable, chances are they have little bureaucracy and at least semi-intelligent management (it's a competitive field, so stupidity dies quickly).
The other side of the coin is that you'll probably work many more hours than you're used to. But if you're willing to consider taking on part time work in addition to your full-time job, then presumably you are prepared to spend more hours working in general.
I'm working for a small but successful trading firm in Chicago. Even though I have a good thing going, I'm keeping my eyes open. My resume is out there, so I get a fair number of emails from recruiters looking for people with experience in this field. Based on this, my guess is that, even in these depressed times, the demand for competent developers is still high in the trading/financial sector.
How many gigabytes are "multiple" gigabytes? Seriously, moving around five GB is much easier than 50 GB and enormously easier than 500 GB.
Another thing to consider: how many consumers are there? A "consumer" is any process that requests the data. If this post is a disguised version of "how do I serve all my DVD rips to all the computers in my house" then you probably won't ever have too many consumers to worry about. On the other hand, I work for an algorithmic trading company; we store enormous data sets (real-time market data) that range anywhere from a few hundred MB to upwards of 20 GB per day. The problem is that the traders are constantly doing analysis, so they may kick off hundreds of programs that each read several files at a time (in parallel via threads).
From what I've gathered, when such a high volume of data is requested from a network store, the problem isn't the network, it's the disks themselves. I.e., with a single sequential transfer, it's quite easy to max out your network connection: disk I/O will almost always be faster. But with multiple concurrent reads, the disks can't keep up. And note that this problem is compounded when using something like RAID5 or RAID6, because not only does your data have to be read, but the parity info as well.
So the object is to actually get many smaller disks, as opposed to fewer huge disks. The idea is to get the highest number of spindles as possible.
If, however, your needs are more modest (e.g. serving DVD rips to your household), then it's pretty easy (and IMO fun) to build your own NAS. Just get:
a case that can hold a lot of disks
a fairly recent motherboard
the cheapest CPU supported by the motherboard (your load is virtually all I/O; very little CPU is needed with modern I/O chipsets)
some RAM
a high quality, high capacity power supply
the disks themselves
and your favorite free operating system of choice
You might also want to purse the Ars Technica Forums. I've seen a number of informative NAS-related threads there.
One more note: lots of people jump immediately to the high performance, and high cost RAID controllers. I personally prefer Linux software RAID. I've had no problems with the software itself; my only problem is getting enough SATA ports. It's hard to find a non-server grade (i.e. cheap commodity) motherboard with more than six or eight SATA ports. It's even harder to find non-PCI SATA add-on cards. You don't want SATA on your PCI bus; maybe one disk is fine, but that bus is simply too slow for multiple modern SATA drives. It's not too hard to find two port PCI express SATA cards; but if you want to run a lot of disks, two ports/card isn't useful. I've only seen a couple of four-port non-RAID PCIe SATA cards. There's one eight port gem, but it requires PCI-X, which, again, is hard to find on non-server grade boards.
In my previous job, I worked for a huge manufacturing company. I developed, maintained and supported an add-on (plug-in, extension, module, whatever) for their 3D CAD/solid modeling application (Pro/Engineer).
When I first hired on, and started working with the application, I learned about the quality process we used: SPQA, or software process quality assurance. This was relatively straightforward, and, in my opinion, didn't add too much overhead. It was basically a checklist of things that a manager went over with the development group. Then we added AQA, application quality assurance. Not only did this add more overhead, but some of the requirements of the two processes conflicted!
The projects my group worked on were fun, cool, and cutting edge, and the majority of the staff was quite engaged in their work. So we worked through all this process nonsense, and basically got used to it. However, lurking in the background all the while was 6 Sigma. The company had adopted this methodology wholesale, and was forcing it to be used in every facet of operation. Now, not only did we have our previous processes, SPQA and AQA, but we had 6 Sigma to contend with.
Looking back, it's sad how much time and effort was wasted just trying to figure out how to integrate all these processes into our development. Literally, the whole section (about 12--15 people) spent many meetings and countless hours coming up with process maps, just to explain how our development would proceed, and comply with AQA, SPQA, 6 Sigma and anything else management felt like we needed to do. I used to eat lunch with the supervisor of another group---he had actually worked in the same group as me, years ago. I'd be moaning about how much of my effort was spent just trying to juggle all these processes, and he'd say, "Back in my day, we just thought up an idea and coded it." I'd talk about the growing queue of bugfixes and enhancements, and how none of them could ever be realized without eliminating all this process nonsense (or doubling the staff and budget) and he'd smile and say, "I remember when so-and-so called me up, asking if I could make the program do such-and-such, and I did it the same afternoon!" Sigh.
- To be reprimanded for every little mistake I make, or worse be put in a position where a little mistake on my part can cause a huge, expensive and/or very visible problem
I added emphasis to ask the question, why not? Granted, no one wants to be the person whose slight goof caused a major problem. But if your little mistake can truly have such massive repercussions, then you are either (1) in way over your head or (2) in a position of high responsibility (which should imply high pay).
My job consists of writing code that provides algorithmic trading logic connectivity to the exchanges on which we trade. The programs simply have to be right; a slight error can cost us lots of money (missed executions, sending orders at the wrong price, sending too many orders, etc). The "team" I'm on consists of one other guy and myself. Somewhat to my chagrin, we basically work independently. My previous position (at another company), while not perfect, at least had team-based collaboration: the little "gotchas" were harder make it into production, only because there were more eyes looking at the product.
I've lamented this situation considerably; the whole "no-one-is-looking-out-for-me", or "release-and-hope-for-the-best" method of development. I'd like to think that I'm at worst an average programmer, but I recognize that even the best programmers make mistakes. Certainly I'm no exception to this rule of humanity. But such is life; the upside to all this is that I'm making more than I would in pretty much any other development role. This "it's all me" approach, combined with the facts that it's very hard to test these applications, while stressful, has made me a more cautious, careful coder. I'm slowly getting better at running test cases in my head. And I'm making bank.
So... long story short, if you're at a position where a little mistake can have massive repercussions, it may be an opportunity to grow as a developer and/or make more money.
See Raster's news page. Scroll down to Sunday 29 May 2005 or search for "E17 is being optimised". It's obviously quite dated, but interesting anyway. Granted, if someone's product looks good because of the tests the same person wrote, you have to take the results with a grain of salt... but it is all open source. I have always hoped someone who knew X really well would come along and make a more complete window manager performance and benchmarking suite.
Also of interest on the same news page is the Monday, 21 November 2005 entry, "Memory fragementation under Linux and Enlightenment". If nothing else, it's evidence that Rasterman truly has put a lot of time and effort---or at the very least, thought---into the performance and system requirements of his software. Can't fault him for that.
He did a lot of work on imlib2, which languished for years until better software replaced it (where "better" might mean "less buggy" or "released more frequently" or "appears maintained").
To which software are you referring? (Honest question, not rhetorical.)
I've never thought that he had much interest in releasing stable versions of his code with any frequency or rhythm. That's not the sole criterion for positive notoriety, but releasing software that people can actually use is important.
The release cycle is painfully slow, or possibly even non-existent. One of the lowest layers in the E17 actually has a release version. And I just now noticed that there is a release snapshot for E17 and EFL. I haven't taken the time to look at the actual bug lists for the whole E17 project, but I am one of the many people saying "E17 has been quite stable for me and I use it every day". So there's some positive hearsay for whatever that's worth.:)
(One caveat is that I stopped using Enlightenment a decade ago, around E14, because the new versions weren't stable or releasable.)
In all fairness, E14 was a looooong time ago. When development for E17 got started, E16 got handed off. It's been a supported, "release quality" product for quite a while now (not as glamorous, obviously). I lurk on the enlightenment-users mailing list, and see a fair number of people asking questions about E16, bugs getting fixed, etc, relative to the general E17 traffic.
Anyway, I've got high hopes for an actual, true-to-life E17 release version... it was actually asked about recently on the e-users mailing list. Raster said they are working towards a release. The snapshot news linked above supports they notion that he is following through with this.
Ahh, yes, I agree. After I posted that, I replied to myself saying that, probably, it shouldn't actually be the government doing the work and administering the service. It should be a self-organized group, basically a co-op. However, I struggle to find a way to help this co-op get the seed money without government involvement.
Perhaps another idea, though, to counter-act the "unforseen consequences of government power growing with size" problem is to have all laws regarding this be time-limited. E.g., if it is the government doing the work (and not some self-organized citizens' group), the law or charter or whatever should have a clause that says this expires after n years. The idea being, that if the city grows or even just changes in some way as to render the service insufficient, there's a clear break where the populace can jump in and vote to have the charter/law not renewed.
In general, it seems like time-limited, self-expiring laws at all levels of government might be a good thing. Maybe not in all cases, but seems reasonable for a lot of cases.
Actually, thinking about that a bit more... perhaps nothing that's officially a "government" should do these things. Instead, it should be left to self organizing units. In this city discussed here, it shouldn't be the actual city doing the network, but a self-organized group of concerned citizens who want to build their own network for the good of the city. Basically a kind of network co-op. The problem then, is funding. Unless they just happen to have an uber-rich person willing to build a city intranet for the good of the community, this is a no-go. But, the city could provide some kind of funding for this. Although, we're then back again to the city and the network crew being in bed. However, it's a step towards separation...
How much should the government do? The people should decide. But the challenge is, as the size of the government grows, it gets harder and harder for every person to have his say. That's why small governmental units are best for making these decisions. Do I want the Federal Government providing these kinds of services? Absolutely not. Do I want the state government? Probably not. County government? Maybe. City government? Perhaps. And then, in a huge city, I probably don't want the city deciding. So maybe my sub-division, or home owner's association, or my block, or my building. When you have a small enough organizational unit, these kinds of "communal" decisions do work; they are small enough for everyone to have a say. And then if you're the one guy that gets ousted, well, it's (ideally) a small enough unit that you can easily transition to another unit.
I work for a small (5 ppl) IT-only company and when we hire someone, while he will get some basic training, he is supposed to work pretty independantly. But once in such a position you can pretend doing a lot while doing almost nothing, and still make things appear to 'work'. You'd be amazed what an incompetent guy can pretend to be and produce results that on the first glance seem to be OK. And then when his software goes into production you suddenly notice that he didn't use an XML parser, but expected certain data on certain lines and filtered it out using regular expressions - and NO, not using the standard regular expression library...
How much experience did the guy claim to have? The example of his code is horrendous pretty much any way you look at it. On the other hand, I've been in a similar situation where I can maybe see where he came from.
I took a job as a C/C++ programmer. My previous role had been doing C/C++ development. But it was a completely different industry. I got a quick verbal introduction to what was going on, then kind of thrown at it all. I didn't really write bad code, just not as optimal as it could have been. I was used to a different mindset, different set of goals from my previous job. Plus I had no direction, guidance, etc. I'm not too shy when it comes to asking questions, but the environment was somewhat hostile, which felt like questions were discouraged.
I hung in there, am still in the same position, and am more or less getting used to doing things "their" way. It's just a different mindset. There were no major problems (certainly not of the magnitude you describe), things just didn't go as smoothly as they could have. I don't think too much of it is my fault; when hiring somebody who comes from a completely different industry, or has relatively little experience (e.g. college grad), they need to be given a little more supervision, direction and support. I'm not talking about hand-holding, just a some hands-on status checks, really quick code reviews (or at least architecture reviews, or at the minimum verbal reviews of how the problem is being solved).
It's even worse than that: As a computer scientist, I pick up new stuff up quickly. So what that I've been doing Java for the last N years, give me a C project and I'll do it (without memory leaks, I know what a pointer is and can use valgrind --- Oh, and exactly this happened this year and I delivered.). That however, seems to be beyond the comprehension of anyone hiring people. Getting a well rounded computer scientist is better than getting someone who knows the buzzwords and can code a bit in one language.
Generally I agree... but look at it from the employer's perspective. Say you needed to hire a mechanic to work on cars. One candidate claimed to "pick things up quickly", and had lots of mechanical experience in everything but cars (planes, motorcycles, ATVs, boats, etc). Your other candidate was a car expert. Who will you hire? Assuming everything else about the two candidates is equal, do you want the guy who will "quickly" learn cars, or the guy who can start being productive the minute he walks in the door as an employee?
I read the thread on the Ubuntu forums, where the guy's correspondence with Foxconn was posted. What frustrates me time and time again is seeing these often immature, scathing, and/or accusatory emails being sent by self-proclaimed representatives of the Linux and/or open source community.
In particular, "Yeah, well, I allege that you guys thoroughly suck. Learn how to write a BIOS before you go selling hardware with falsified specs." Come on, how does that help the situation at all? Speculating on the motives of Foxconn and/or the BIOS provider is fine for forums like this. But when dealing with the manufacturer, keep it professional, and stick to the issues at hand. In this case, the issue is that the board claims to be ACPI compliant, and it is not. That can be proven and repeatably verified. In fact, Linux compatibility isn't even an issue here. That the BIOS fails to work with Linux is a side-effect (i.e. Linux assumes a working ACPI implementation, and this motherboard does not provide that).
Of course the bigger problem is that while a standard exists (i.e. ACPI), Microsoft can get away with using its weight to effectively subvert it. Like another poster here said, there are lots of motherboards with imperfect DSDTs that cause various degrees of headache with Linux. This Foxconn board appears to be one of the worst, however.
If I were to speculate, I doubt Foxconn or the BIOS provider (AMI) is actively trying to break Linux. I think it's just poor coding and/or lack of concern for adhering to the ACPI spec (which in turn breaks Linux). The big money is in supporting Microsoft Windows, so that's what the vendors will do. Ideally, there would be an official "ACPI certification" offered by ISO or some not-for-profit third party, and both the vendors and Microsoft would have to comply. But the reality is that while there is a standard, it's not closely followed, and instead has degraded into vendors and Microsoft working too close, effectively preempting the specification. In other words, a Microsoft certification does not imply ACPI compliance. It should, but Microsoft doesn't gain anything from enforcing that.
As for poor coding... I've seen plenty of code written by people who either didn't know what they were doing or didn't care. The result is that you get lots of crummy hacks to take care of special cases. Seriously, why would a company go out of their way to not work with Linux? Yes, conspiracy is a possibility. But I think the more likely reason is that the lousy support was either done by someone who didn't care or didn't know enough to do it correctly... and/or it was an after-thought, a total kludge that didn't go through the typical QA process.
Anyway... I give Foxconn credit for at least replying with readable, mostly grammatically correct, non-form letters. Many hardware vendors I've dealt with either reply with worthless form letters, broken, non-sense English, and/or don't reply at all. Given that this person actually had the ear of a presumably "real" person, I have to wonder: if he'd kept his dialogue more professional, left out the name-calling, accusations and allegations, and remained true to the crux of the matter (non-compliant ACPI implementation), perhaps Foxconn would have been more receptive.
The Bad... Chicago. Maybe it's because I live too close to Chicago and been there plenty of times, but I lost some immersion when I could easily identify some landmark buildings. Sure, I didn't see the Sears Tower, but Harvey Dent's office was overlooking the Chicago River and their round car park high-rises. That and all the cars had Illinois license plates. I didn't know Gotham was in Illinois? I was just waiting to see "Cubs" and "Bears" sticks on peoples cars.
Hehe, indeed. One shot in particular hit a little too close to home for me. There was a scene which began with a shot where one of the banners of the Lyric Opera building was plainly visible. I literally work in a building adjacent to the Lyric Opera, and don't particularly like my job. So for a brief moment I was transported out of the movie, and placed back at work, reducing my overall enjoyment of the flick.
I didn't see the Sears Tower either, but I did notice the Hancock Building in one panoramic shot.
* ALL sweeteners, regardless of their source or chemical composition, trigger insulin production in the same way that sugar does. This is a reflexive response, where the body ramps up insulin production in response to the *taste* of sweet, not waiting until blood sugar actually goes up. This results in lower blood sugar levels in response to non-nutritive sweeteners, which induces hunger and sugar/carb cravings. This is why switching to diet soda from regular causes weight *gain* rather than loss in often-replicated studies.
Citation or reference? I'm not doubting you---I honestly want to read more about this phenomenon.
I keep seeing new boards like this come out, hoping one will have all the features I want for an ideal NAS (network attached storage) build. Right now, there is always some trade-off for what I want. Show me the board that has...
One board comes close: the VIA NAS 7800, but it doesn't appear to be available to the general public. And I don't see anything about supporting ECC memory. For no reason other than hearsay, I'm not so sure I'd trust important data to a Via chipset.
The next best, IMO (and I actually have one of these), is the Gigabyte GA-MA74GM-S2. Check out SilentPCReview's writeup on this board. Only problem: I'm not sure if it supports ECC or not (AMD CPUs do, but I've heard it still requires the motherboard vendor to enable it). One annoying problem is that the PCIe x16 slot is for video only---you can't put a SATA controller card, extra NIC or anything else useful to a NAS in there. Still, while it's a very low-power board when paired with the right CPU, it's still overkill for a NAS. In general, I think the power draw for a NAS (excluding the hard drives) should be under 15 Watts.
The Point of View Ion/Atom board linked above looks promising. But, as far as I can see, no compact flash, and probably no ECC memory support.
I have two home-built servers: one is an always-on, live NAS; the other is a backup server that I power on only to do backups (or restores if it comes to that). First rule I go by: always use the slower 5400 RPM drives, such as the Western Digital "Green" or the Samsung EcoGreen. For both media streaming and backup purposes, these hard drives are still plenty fast. The biggest benefit, though, is that they use less energy (particularly important if your system is always on), and don't get as hot, making cooling much easier (which usually also translates to quieter).
My live server is currently 4 x 1TB drives in RAID-5, using Linux software RAID. (I know RAID is no substitute for backup, but I still consider it "quasi" backup. But I also have real backup.) This system is fairly un-interesting: it's your typical DIY NAS.
The backup server is housed in the Norco RPC-4020. For $300, you get 24 SATA hot-swap bays. That price is hard to beat. I haven't filled this case up with drives yet, and I have plenty of physical space going forward. The hardware is just some unused spare components I had lying around. Extra SATA ports are provided by the Supermicro AOC-SAT2-MV8 (which works fine in "regular" 32-bit PCI slots).
This, IMO, is a pretty simple set up. I just power up the backup server whenever I need it, and turn it off when I'm done. I don't care about performance, since backups are always run as a batch job (typically over night).
Before I bought that Norco case, I was just using individual drives with a Thermaltake BlacX SATA-to-USB hard drive docking station. This is cheaper, just slightly less convenient. I did order 50 "zip lock"-style anti-static bags for $13. I ordered them from staticbags.com ("GRC Enterprises" was listed on my invoice). After I copied data to the drive and put it in an anti-static bag, I just added it to the stack of drives I had on my bookshelf. The Norco case definitely looks better! :)
All in all, I consider my system fairly robust. It's only semi-secure against my stupidity, and since its all housed in the apartment, does not safeguard against fire. But since the media rips are just copies of DVDs I actually own, my insurance policy becomes the ultimate backup.
My recommendation is to avoid hiring the obvious jerks, and treat the ones who get through with decency and respect, while both challenging them and mentoring them to the challenge (not as hard as you think), and you'll get more than your money's worth.
That's a refreshing viewpoint. I don't see this attitude advertised too often; I'm not sure if I'm looking in the wrong places, or it truly is rare.
I've worked two "real" jobs since graduating college about seven years ago. I was assigned a mentor at the first place who really helped me understand the business, the big picture, always took time to answer my questions, helped me when I got stuck, etc. The job itself was "just ok", but I honestly feel that I was imbued with a higher degree of engagement thanks to the quality coaching I received early on---that itself was enough to turn a "just ok" job into a pretty interesting one.
In contrast, my current job was basically "sink or swim" when I started. I've been here almost three years, and never developed half the enthusiasm I had at the old job. The environment I'm in now views any kind of coaching or mentoring as "hand-holding"---if someone needs more than a few sentences' of instruction, they're no good.
[...] The reason why the HDHomeRun isn't coupon-eligible is its lack of an RF output
Sounds like a business opportunity for Silicon Dust. I wonder how hard it would be for them to graft an RF output onto their device? They they could advertise it as being coupon-eligible. If I could get $40 off, I'd go buy another one! Really, if they made the device coupon-eligible, then you'd have a cool device that's exactly what the topic starter wanted!
Not quite what you asked for, and I don't know if you can use your coupon (I'm guessing not)... but the HDHomeRun allows you two capture MPEG streams. It integrates well with MythTV. It has an open source library. Pretty sweet little device in my opinion.
For anything but dialup accounts, there's nothing to it. Most OS's come set up for DHCP on the ethernet. Plug the cable in, turn it on, and you're done.
I've had at least one ISP where they had to get the MAC address of whatever you plugged into their modem before it would work. I think this was with Ameritech (who I believe have now been swallowed up by AT&T) DSL. That was one thing the "magic CD" did for you: you ran it, and it went to some special address and registered your MAC address. And if you didn't have Windows (or didn't want to reverse engineer what the CD software did), you had to call and pray you got someone kind enough to help you out. At least half would just say, "Sorry, we only support Windows." After going through this once or twice, I learned exactly what to say to get my stuff working, but it was painful getting there. This situation may have improved, as this was several years ago.
Show that you can work with others.
I used to pride myself on that fact, because I feel I am good at working with others. But based on what I've seen in the trading industry, working with others is a secondary concern to being able to write working code. In fact, if you can write code that works, that's practically all that matters.
Case in point, the guy I work with. To me, the best programmer-employee is one who ranks high on all the following attributes: writes code that works; self-motivated; works well with others; good architecture and software engineering skills; is consistent in his approach to writing code; writes readable code that others can use; communicates well (both understanding requirements and vocalizing what he's done)... few people probably excel in all categories, but the guy I work with is a zero in all but the "writes code that works" category. At the end of the day, his code is helping us make money. But communicating to him what needs to be done is a painful, labor-intensive process; understanding what he's done is an exercise in patience and frustration management (both looking at his code and asking him what his stuff does is painful); and he won't do much of anything unless continually prodded.
I had no papers to my name, and I started at 68,000 which got bumped to 73,000 on my 30 day review. And it was in '97. I did have a couple of solo programming projects, and an internship at an evil corporation...
I say an MIT grad could get 60k with a bit of effort.
What geographical location was/is that? At least in the US, in some parts of the country, $70k is an extremely comfortable salary; in others, it's near poverty level.
It appears to me that the finance/trading industry is still going fairly strong, i.e. still has a lot of job opportunities. I'm not actively looking for a job, but I have my resume out there, as well as a LinkedIn page (I figure it's always good to at least be "passively" looking for a better opportunity). I receive emails from recruiters/head hunters about once a week on average. Most of the opportunities are basically doing exactly what I'm doing now: connectivity/infrastructure development for a trading company.
Granted, the topic starter was asking about system administrator-type jobs, but presumably, the companies that need developers probably also need good admins.
Now, bad news. At least with my employer, we are basically only looking for people with previous experience. "Training" is not in our vocabulary. Effectively, we are only willing to consider people who can come in and start delivering excellent work with a minimum of support and direction.
My previous job was at a huge corporation, where they hired more on personality "type" and believed training would solve any knowledge or skill deficiencies.
Obviously, the ideal employee has experience that is a perfect match with job requirements and has the right personality. But realistically, these people are incredibly hard to find. And how long is a firm willing to wait to find these magical people?
So my question is: do companies still offer training programs? I've seen this attitude here on Slashdot that it's lazy to expect training from an employer, that one should be willing to put in the extra effort to come up to speed on whatever knowledge or skill the job demands on one's own time.
And another, related question is: even if companies aren't taking the time to explicitly train new hires, are they at least allowing time to "grow" and/or mentor employees? Looking only at the firm where I now work, I'm afraid that answer is a hard "no". That not only do you need exceptional experience to even get in the door, but once in, you're almost entirely on your own: someone will tell you what needs to be done and expect you to get it done.
I don't like the "sink or swim" mentality; frankly, it's kind of scary. But I think that huge training programs and hand-holding are probably low on the value scale. For me, there's a happy medium: I'm willing to put in extra hours to learn the technology and develop the skills I need, if the employer is willing to spend some time coaching me in the nature of the business, helping me learn the whys behind the things they do, the business models, the firm's culture and values, etc. I think that's a fair trade. But my experience at my current firm, and based at least on what I've heard of similar companies, they don't even take the time to properly introduce the company, i.e. the go by the "trial by fire" method of employee indoctrination. Is this unique to the trading industry, or is this just the way it is now?
Honest question: how does git compare to Clearcase? I ask because we used Clearcase at my previous job. I have fairly vivid memories of cursing it at the time. I started using svn for small projects at home and thought it was the best thing ever. In my current job we use svn as well; it's a small team, and the majority of modules have explicit ownership by a single person.
Anyway, I watched that video of Linus talking about git, and reading many of the posts here, I think it sounds really cool. But if my memory is correct, it seems like Clearcase can do many of the same things. The problem I saw with Clearcase, though, was more of a policy program. There was a tremendous amount of code history from people who had no business using any revision control system in the first place. Then there were histories of different peoples' ideologies on how source should be managed. Finally, while I was there, we had a guy come into our group who, in my opinion, had a really sane approach to Clearcase usage. Basically, the best practices he preached made our Clearcase usage look a lot like the good parts of git that everyone talks about. But still, to have sanity in Clearcase, it required that everyone follow the best practices, i.e. a policy matter. Too many people either didn't understand the rational behind the policy, were too stubborn to do it any way but their own, or simply made too many mistakes trying to keep up with the rules of the best practices.
Also, CC was dreadfully slow---everyone talks about how git is faster than svn, and svn is definitely faster than Clearcase (in my experience anyway).
Another area where we struggled was integrating the offshore development team into our Clearcase environment. I am guessing that git is fairly open by design---how does it fare for distributed groups for proprietary development (i.e. where the code needs to be kept secret)? CC may have improved, but when I was there, the offshore team had to use this Clearcase Web program that had limited functionality that couldn't even do everything we needed to maintain said sane policies mentioned above. I remember the offshore team checking code in, then I would go through and re-work the revision history to make it adhere to our policy. (This is about the time I left for a new job.)
Anyway, I'm not trying to promote Clearcase in anyway---I just wonder how it differs from git. And, even if it is fundamentally different, it looks like CC can somewhat be hammered into acting like git in some (perhaps scary) way.
Final question: the git method (as I understand it) certainly makes a lot of sense. But what about for developers who "don't get it"? It seems like it would be easy in such a de-centralized system to bung things up pretty bad for everyone else. I.e., how is sane usage policy enforced?
I graduated with a bachelor's in CS in December, 2001. My first job was for a huge manufacturing company. It was like a three-pronged fork: I did training, development, and support. We had a custom in-house application: an enhancement or "plugin" to a solid modeling application (Pro/ENGINEER). I was on a team of three, taking support calls, developing enhancements, bugfixing, and even going on-site to give a two-day training class.
That job was pretty fun, at least for the first few years. Towards the end of my five-year tenure there, I became less of a coder and more of a "project manager". Getting a step closer to management revealed more bureaucracy to me, and it started to get frustrating. I started thinking about some kind of internal transfer, when a friend called with an opportunity: come work with him at the trading firm he and another guy were starting.
So here I am, two years into the trading gig. In the parlance of this industry, I am a "connectivity developer". As our business grows and expands, I basically write the same programs over and over again: one to provide market data to the trading logic, and one to manage orders. I more or less "code all day".
I took the job because I wanted to do more development---in my previous job I felt I was getting too far away from the code, and wanted to stay more technical. What I found when I got here, though, is that spending the first five years not doing "hard core" coding (i.e., only spending about half my time actually programming) made me a weaker programmer than I thought myself to be. Perhaps another perspective is that the trading industry simply demands better coders---I have definitely improved since working here.
One of my points in all this is that you said, "I don't think I would particularly love to write code all day for a living either." I interpreted that as some coding is OK, not just all day every day. And my first job basically was just that---some coding.
This isn't exactly what you specified, but you ought to look into development jobs in small trading or financial firms.
Many of them want C++ coders, but there is some demand for Java folks.
Why I suggest this: in my experience, the trading/financial industry pays more---potentially a lot more when bonuses are taken into consideration. If you find a small trading firm that is profitable, chances are they have little bureaucracy and at least semi-intelligent management (it's a competitive field, so stupidity dies quickly).
The other side of the coin is that you'll probably work many more hours than you're used to. But if you're willing to consider taking on part time work in addition to your full-time job, then presumably you are prepared to spend more hours working in general.
I'm working for a small but successful trading firm in Chicago. Even though I have a good thing going, I'm keeping my eyes open. My resume is out there, so I get a fair number of emails from recruiters looking for people with experience in this field. Based on this, my guess is that, even in these depressed times, the demand for competent developers is still high in the trading/financial sector.
How many gigabytes are "multiple" gigabytes? Seriously, moving around five GB is much easier than 50 GB and enormously easier than 500 GB.
Another thing to consider: how many consumers are there? A "consumer" is any process that requests the data. If this post is a disguised version of "how do I serve all my DVD rips to all the computers in my house" then you probably won't ever have too many consumers to worry about. On the other hand, I work for an algorithmic trading company; we store enormous data sets (real-time market data) that range anywhere from a few hundred MB to upwards of 20 GB per day. The problem is that the traders are constantly doing analysis, so they may kick off hundreds of programs that each read several files at a time (in parallel via threads).
From what I've gathered, when such a high volume of data is requested from a network store, the problem isn't the network, it's the disks themselves. I.e., with a single sequential transfer, it's quite easy to max out your network connection: disk I/O will almost always be faster. But with multiple concurrent reads, the disks can't keep up. And note that this problem is compounded when using something like RAID5 or RAID6, because not only does your data have to be read, but the parity info as well.
So the object is to actually get many smaller disks, as opposed to fewer huge disks. The idea is to get the highest number of spindles as possible.
If, however, your needs are more modest (e.g. serving DVD rips to your household), then it's pretty easy (and IMO fun) to build your own NAS. Just get:
You might also want to purse the Ars Technica Forums. I've seen a number of informative NAS-related threads there.
One more note: lots of people jump immediately to the high performance, and high cost RAID controllers. I personally prefer Linux software RAID. I've had no problems with the software itself; my only problem is getting enough SATA ports. It's hard to find a non-server grade (i.e. cheap commodity) motherboard with more than six or eight SATA ports. It's even harder to find non-PCI SATA add-on cards. You don't want SATA on your PCI bus; maybe one disk is fine, but that bus is simply too slow for multiple modern SATA drives. It's not too hard to find two port PCI express SATA cards; but if you want to run a lot of disks, two ports/card isn't useful. I've only seen a couple of four-port non-RAID PCIe SATA cards. There's one eight port gem, but it requires PCI-X, which, again, is hard to find on non-server grade boards.
In my previous job, I worked for a huge manufacturing company. I developed, maintained and supported an add-on (plug-in, extension, module, whatever) for their 3D CAD/solid modeling application (Pro/Engineer).
When I first hired on, and started working with the application, I learned about the quality process we used: SPQA, or software process quality assurance. This was relatively straightforward, and, in my opinion, didn't add too much overhead. It was basically a checklist of things that a manager went over with the development group. Then we added AQA, application quality assurance. Not only did this add more overhead, but some of the requirements of the two processes conflicted!
The projects my group worked on were fun, cool, and cutting edge, and the majority of the staff was quite engaged in their work. So we worked through all this process nonsense, and basically got used to it. However, lurking in the background all the while was 6 Sigma. The company had adopted this methodology wholesale, and was forcing it to be used in every facet of operation. Now, not only did we have our previous processes, SPQA and AQA, but we had 6 Sigma to contend with.
Looking back, it's sad how much time and effort was wasted just trying to figure out how to integrate all these processes into our development. Literally, the whole section (about 12--15 people) spent many meetings and countless hours coming up with process maps, just to explain how our development would proceed, and comply with AQA, SPQA, 6 Sigma and anything else management felt like we needed to do. I used to eat lunch with the supervisor of another group---he had actually worked in the same group as me, years ago. I'd be moaning about how much of my effort was spent just trying to juggle all these processes, and he'd say, "Back in my day, we just thought up an idea and coded it." I'd talk about the growing queue of bugfixes and enhancements, and how none of them could ever be realized without eliminating all this process nonsense (or doubling the staff and budget) and he'd smile and say, "I remember when so-and-so called me up, asking if I could make the program do such-and-such, and I did it the same afternoon!" Sigh.
What I don't want is:
- To be reprimanded for every little mistake I make, or worse be put in a position where a little mistake on my part can cause a huge, expensive and/or very visible problem
I added emphasis to ask the question, why not? Granted, no one wants to be the person whose slight goof caused a major problem. But if your little mistake can truly have such massive repercussions, then you are either (1) in way over your head or (2) in a position of high responsibility (which should imply high pay).
My job consists of writing code that provides algorithmic trading logic connectivity to the exchanges on which we trade. The programs simply have to be right; a slight error can cost us lots of money (missed executions, sending orders at the wrong price, sending too many orders, etc). The "team" I'm on consists of one other guy and myself. Somewhat to my chagrin, we basically work independently. My previous position (at another company), while not perfect, at least had team-based collaboration: the little "gotchas" were harder make it into production, only because there were more eyes looking at the product.
I've lamented this situation considerably; the whole "no-one-is-looking-out-for-me", or "release-and-hope-for-the-best" method of development. I'd like to think that I'm at worst an average programmer, but I recognize that even the best programmers make mistakes. Certainly I'm no exception to this rule of humanity. But such is life; the upside to all this is that I'm making more than I would in pretty much any other development role. This "it's all me" approach, combined with the facts that it's very hard to test these applications, while stressful, has made me a more cautious, careful coder. I'm slowly getting better at running test cases in my head. And I'm making bank.
So... long story short, if you're at a position where a little mistake can have massive repercussions, it may be an opportunity to grow as a developer and/or make more money.
See Raster's news page. Scroll down to Sunday 29 May 2005 or search for "E17 is being optimised". It's obviously quite dated, but interesting anyway. Granted, if someone's product looks good because of the tests the same person wrote, you have to take the results with a grain of salt... but it is all open source. I have always hoped someone who knew X really well would come along and make a more complete window manager performance and benchmarking suite.
Also of interest on the same news page is the Monday, 21 November 2005 entry, "Memory fragementation under Linux and Enlightenment". If nothing else, it's evidence that Rasterman truly has put a lot of time and effort---or at the very least, thought---into the performance and system requirements of his software. Can't fault him for that.
He did a lot of work on imlib2, which languished for years until better software replaced it (where "better" might mean "less buggy" or "released more frequently" or "appears maintained").
To which software are you referring? (Honest question, not rhetorical.)
I've never thought that he had much interest in releasing stable versions of his code with any frequency or rhythm. That's not the sole criterion for positive notoriety, but releasing software that people can actually use is important.
The release cycle is painfully slow, or possibly even non-existent. One of the lowest layers in the E17 actually has a release version. And I just now noticed that there is a release snapshot for E17 and EFL. I haven't taken the time to look at the actual bug lists for the whole E17 project, but I am one of the many people saying "E17 has been quite stable for me and I use it every day". So there's some positive hearsay for whatever that's worth. :)
(One caveat is that I stopped using Enlightenment a decade ago, around E14, because the new versions weren't stable or releasable.)
In all fairness, E14 was a looooong time ago. When development for E17 got started, E16 got handed off. It's been a supported, "release quality" product for quite a while now (not as glamorous, obviously). I lurk on the enlightenment-users mailing list, and see a fair number of people asking questions about E16, bugs getting fixed, etc, relative to the general E17 traffic.
Anyway, I've got high hopes for an actual, true-to-life E17 release version... it was actually asked about recently on the e-users mailing list. Raster said they are working towards a release. The snapshot news linked above supports they notion that he is following through with this.
Ahh, yes, I agree. After I posted that, I replied to myself saying that, probably, it shouldn't actually be the government doing the work and administering the service. It should be a self-organized group, basically a co-op. However, I struggle to find a way to help this co-op get the seed money without government involvement.
Perhaps another idea, though, to counter-act the "unforseen consequences of government power growing with size" problem is to have all laws regarding this be time-limited. E.g., if it is the government doing the work (and not some self-organized citizens' group), the law or charter or whatever should have a clause that says this expires after n years. The idea being, that if the city grows or even just changes in some way as to render the service insufficient, there's a clear break where the populace can jump in and vote to have the charter/law not renewed.
In general, it seems like time-limited, self-expiring laws at all levels of government might be a good thing. Maybe not in all cases, but seems reasonable for a lot of cases.
Actually, thinking about that a bit more... perhaps nothing that's officially a "government" should do these things. Instead, it should be left to self organizing units. In this city discussed here, it shouldn't be the actual city doing the network, but a self-organized group of concerned citizens who want to build their own network for the good of the city. Basically a kind of network co-op. The problem then, is funding. Unless they just happen to have an uber-rich person willing to build a city intranet for the good of the community, this is a no-go. But, the city could provide some kind of funding for this. Although, we're then back again to the city and the network crew being in bed. However, it's a step towards separation...
How much should the government do? The people should decide. But the challenge is, as the size of the government grows, it gets harder and harder for every person to have his say. That's why small governmental units are best for making these decisions. Do I want the Federal Government providing these kinds of services? Absolutely not. Do I want the state government? Probably not. County government? Maybe. City government? Perhaps. And then, in a huge city, I probably don't want the city deciding. So maybe my sub-division, or home owner's association, or my block, or my building. When you have a small enough organizational unit, these kinds of "communal" decisions do work; they are small enough for everyone to have a say. And then if you're the one guy that gets ousted, well, it's (ideally) a small enough unit that you can easily transition to another unit.
I work for a small (5 ppl) IT-only company and when we hire someone, while he will get some basic training, he is supposed to work pretty independantly. But once in such a position you can pretend doing a lot while doing almost nothing, and still make things appear to 'work'. You'd be amazed what an incompetent guy can pretend to be and produce results that on the first glance seem to be OK. And then when his software goes into production you suddenly notice that he didn't use an XML parser, but expected certain data on certain lines and filtered it out using regular expressions - and NO, not using the standard regular expression library...
How much experience did the guy claim to have? The example of his code is horrendous pretty much any way you look at it. On the other hand, I've been in a similar situation where I can maybe see where he came from.
I took a job as a C/C++ programmer. My previous role had been doing C/C++ development. But it was a completely different industry. I got a quick verbal introduction to what was going on, then kind of thrown at it all. I didn't really write bad code, just not as optimal as it could have been. I was used to a different mindset, different set of goals from my previous job. Plus I had no direction, guidance, etc. I'm not too shy when it comes to asking questions, but the environment was somewhat hostile, which felt like questions were discouraged.
I hung in there, am still in the same position, and am more or less getting used to doing things "their" way. It's just a different mindset. There were no major problems (certainly not of the magnitude you describe), things just didn't go as smoothly as they could have. I don't think too much of it is my fault; when hiring somebody who comes from a completely different industry, or has relatively little experience (e.g. college grad), they need to be given a little more supervision, direction and support. I'm not talking about hand-holding, just a some hands-on status checks, really quick code reviews (or at least architecture reviews, or at the minimum verbal reviews of how the problem is being solved).
It's even worse than that: As a computer scientist, I pick up new stuff up quickly. So what that I've been doing Java for the last N years, give me a C project and I'll do it (without memory leaks, I know what a pointer is and can use valgrind --- Oh, and exactly this happened this year and I delivered.). That however, seems to be beyond the comprehension of anyone hiring people. Getting a well rounded computer scientist is better than getting someone who knows the buzzwords and can code a bit in one language.
Generally I agree... but look at it from the employer's perspective. Say you needed to hire a mechanic to work on cars. One candidate claimed to "pick things up quickly", and had lots of mechanical experience in everything but cars (planes, motorcycles, ATVs, boats, etc). Your other candidate was a car expert. Who will you hire? Assuming everything else about the two candidates is equal, do you want the guy who will "quickly" learn cars, or the guy who can start being productive the minute he walks in the door as an employee?
I read the thread on the Ubuntu forums, where the guy's correspondence with Foxconn was posted. What frustrates me time and time again is seeing these often immature, scathing, and/or accusatory emails being sent by self-proclaimed representatives of the Linux and/or open source community.
In particular, "Yeah, well, I allege that you guys thoroughly suck. Learn how to write a BIOS before you go selling hardware with falsified specs." Come on, how does that help the situation at all? Speculating on the motives of Foxconn and/or the BIOS provider is fine for forums like this. But when dealing with the manufacturer, keep it professional, and stick to the issues at hand. In this case, the issue is that the board claims to be ACPI compliant, and it is not. That can be proven and repeatably verified. In fact, Linux compatibility isn't even an issue here. That the BIOS fails to work with Linux is a side-effect (i.e. Linux assumes a working ACPI implementation, and this motherboard does not provide that).
Of course the bigger problem is that while a standard exists (i.e. ACPI), Microsoft can get away with using its weight to effectively subvert it. Like another poster here said, there are lots of motherboards with imperfect DSDTs that cause various degrees of headache with Linux. This Foxconn board appears to be one of the worst, however.
If I were to speculate, I doubt Foxconn or the BIOS provider (AMI) is actively trying to break Linux. I think it's just poor coding and/or lack of concern for adhering to the ACPI spec (which in turn breaks Linux). The big money is in supporting Microsoft Windows, so that's what the vendors will do. Ideally, there would be an official "ACPI certification" offered by ISO or some not-for-profit third party, and both the vendors and Microsoft would have to comply. But the reality is that while there is a standard, it's not closely followed, and instead has degraded into vendors and Microsoft working too close, effectively preempting the specification. In other words, a Microsoft certification does not imply ACPI compliance. It should, but Microsoft doesn't gain anything from enforcing that.
As for poor coding... I've seen plenty of code written by people who either didn't know what they were doing or didn't care. The result is that you get lots of crummy hacks to take care of special cases. Seriously, why would a company go out of their way to not work with Linux? Yes, conspiracy is a possibility. But I think the more likely reason is that the lousy support was either done by someone who didn't care or didn't know enough to do it correctly... and/or it was an after-thought, a total kludge that didn't go through the typical QA process.
Anyway... I give Foxconn credit for at least replying with readable, mostly grammatically correct, non-form letters. Many hardware vendors I've dealt with either reply with worthless form letters, broken, non-sense English, and/or don't reply at all. Given that this person actually had the ear of a presumably "real" person, I have to wonder: if he'd kept his dialogue more professional, left out the name-calling, accusations and allegations, and remained true to the crux of the matter (non-compliant ACPI implementation), perhaps Foxconn would have been more receptive.
The Bad ... Chicago. Maybe it's because I live too close to Chicago and been there plenty of times, but I lost some immersion when I could easily identify some landmark buildings. Sure, I didn't see the Sears Tower, but Harvey Dent's office was overlooking the Chicago River and their round car park high-rises. That and all the cars had Illinois license plates. I didn't know Gotham was in Illinois? I was just waiting to see "Cubs" and "Bears" sticks on peoples cars.
Hehe, indeed. One shot in particular hit a little too close to home for me. There was a scene which began with a shot where one of the banners of the Lyric Opera building was plainly visible. I literally work in a building adjacent to the Lyric Opera, and don't particularly like my job. So for a brief moment I was transported out of the movie, and placed back at work, reducing my overall enjoyment of the flick.
I didn't see the Sears Tower either, but I did notice the Hancock Building in one panoramic shot.