I sort of agree with you, but there's also a form of over expectation from recruiters and HR services. In order to pass the screening tests, sometimes applicant must have demonstrated skills to save the world, and have proven track records of having done so. 3 times. I read this linkedin blog entry a few days ago where it was said that in order to be considered worthy of an interview, the applicant must show how much of a difference he brought in his previous job. This is completely silly. Not everyone can claim to have raised the company income by 235% by successfully reorganising from scratch the workflow of the engineering team. I am only slightly exagerating. Maybe that's just me taking things too literally. Or maybe I suck at what I do, but everywhere I worked, success was more the result of good teamwork than of the efforts of one single person. Yet simply stating that one is a good team player is not enough.
Yeah, everyone can say: I am a good team player. And every HR can say: Our company provides the best working environment. Hypocrisy on either sides leads nowhere, but it seems like it's still the expected standard.
I think that a linkedin profile can be enough. And if the profile isn't publicly accessible, there might be a good reason: privacy. So why not simply ask? At least it would show that the application is being processed. Or perhaps there's an option somewhere on Linkedin which let a user directly grant access to his profile to people handling job offers when they apply, and you just rant about those not seeing that option.
I practice (though uncomfortably) I am able to extend at least two fingers, enough to enter a 4 digit code and turn the knob. Unlocking vie the phone with two grocery bags is not so easy.
Personally, I switched to a tiled WM because I didn't want to go back and forth between keyboard and mouse all the time. I want an editor which I can handle using keyboard alone, and only use the mouse when I really have to (web, drawing, games - perhaps I should use a trackball).
Acme relies too much on the mouse for me, but I like the idea a lot.
There's another couple of issues: syntax highlighting, large scale refactoring (which is not easy either with vi or emacs atm).
However, once you get accustomed to a certain workflow, it becomes difficult to accept something new. Maybe I should give it a shot.
I'm not sure what you mean by large scale refactoring, but refactoring is much easier in acme compared to any editor I used before because of the powerful sam command language[1] and structural regular expressions[2].
I mean for instance changing the name of a value across multiple files, or fixing calls of a function whose prototype had been modified. That sort of things.
There are other services that an IDE can provide:
- name completion
- list of variables in current scope
- list of visible types
- access to documentation
- code annotation
All these could be implemented in external tools, but how snappy would the interface be?
The filter paradigm of Unix is great for batch processing, but fails when used interactively, unless processi are lightened to the point of becoming almost like threads within the same process, and with the matching communication speed (inter process communication using pipes isn't really that fast compared to shared memory).
That said, maybe large scale programs are the problem to begin with. With simple, one task focused programs, source code becomes easy to maintain without resorting to the services I listed above. It's not easy to get rid of them though (consider compilers for instance).
> I mean for instance changing the name of a value across multiple files, or fixing calls of a function whose prototype had been modified.
This is trivial in sam and acme because of the sam command language and structural regular expressions. See the links in my previous post. In fact not only that it's easy, I haven't yet found any alternative environment where the operation is so powerful. A few days ago I used sam to extract all structs in the Go tree that use a map but not a mutex, or structs that use the first ones and don't have a mutex either. I only cared about a select/find operation, but I could have paired it with a modify operation that could have added the mutex, for example. The scope and power of the language is unmatched.
> name completion
Personally I think it's worthless (and so do most acme users I know) but it's easy to implement as an external program. Jason Catena did it in one of his Inferno labs.
> list of variables in current scope
One sam command away.
> list of visible types
Same, or use Go.
> access to documentation
Right click on identifiers if you have plumber configured.
> code annotation
No idea what this is.
> inter process communication using pipes isn't really that fast compared to shared memory
Actually, it is. There are very few programs in the world where pipe throughput is not enough.
Great! How does a novice like me get his system setup to work with C++, lisp, javascript, or PHP? Do I need to write my own plumbing? Is there repositories of conf files for acme/sam (at least to have some examples to get inspiration from)?
I'd like to try.
I don't program in Go btw.
> Actually, it is. There are very few programs in the world where pipe throughput is not enough.
I am very surprised by this. I always thought that programs made of threads were much faster than groups of processi, which have to communicate through OS channels, rather than a common memory space. Maybe I wasn't considering the fact that interactive programs have a lot of time to spare.
Usually, I expect my interactive programs to be snappy when I ask them something, even if I don't do it often at the CPU timescale. That's the real catch in user interaction.
That's interesting, but what would be the alternative?
Rob Pike's dream setup "is a computing world where I don't have to carry at least three computers - laptop, tablet, phone, not even counting cameras and iPod and other oddments - around with me in order to function in the modern world. The world should provide me my computing environment and maintain it for me and make it available everywhere. If this were done right, my life would become much simpler and so could yours."
In this situation, there would be public phones, public computers available in sufficient quantity everywhere. Think of the necessary amount of work to install, maintain, and upgrade such a setup. In a capitalist society, there would be different brands providing access to their own solutions, and thus a lot of Blackberry, Apple, or <your favorite carrier> kiosks all over the place.
You could think that with such a scheme, costs would prohibit a rapid evolution of services, as we witness them in current business models. Would we get the iKiosks updated each year with new firmware, or the latest multitouch screens? In comparison, how much money is being poured by individuals in upgrades for their personal stuff? What is the overall cost (i.e. money that could be spent on something else).
There's the real estate issue also. How much space would be consumed by those kiosks, and how much would it cost?
It would be interesting to estimate all the pros and cons of that dream setup, and compare it with our current situation.
The closest thing I can imagine to what he wants is something like a "t+15 years" version of the Motorola WebTop (and many other similar ideas). You carry a powerful processor with you and either use it "bare" or connect it to a standardized interface setup. You'll never get enough of those kiosks to completely get to what you described, but when your phone can be a perfectly capable standalone device as well, that becomes less important. You have the "docks" at home, work, and a few popular public places like airports, coffee shops, etc.
The idea of something like these dockable phones is almost certainly going to be a big part of where the industry is headed. It's just too obvious not to be. But it requires advances in both ubiquitous broadband availability and power and battery life available to mobile devices, so it's just not feasible right now.
What is better now with cellphones than before? Why is personal communication so much better now that we can be reached anywhere? I think it's a legitimate question.
In most cases, people indeed want to be reachable, but is it really a good thing? In the long run, does it make the society a better place, and people better people? How can we measure the impact of the cellphone on society?
I remember waiting in line up to half an hour every day to call back home my parents while on vacation because otherwise I wouldn't know if something important had happened and they would assume I was dead.
And, hey, did you remember buying a new card for payphones? Those things used to demagnetise at the speed of light.
I also remember that one time I locked myself out of my home and had to walk for 2km to get a the spare set from a friend (lets just hope he is there).
Yes I think overall it's really a good thing.
The issues you're describing has been solved by cellphones, but it doesn't mean it was the only solution. More payphones, more reliable phone cards (in France we use smartcards for that) would have done the trick.
XMonad is really great, provided you're willing to spend some time learning Haskell to configure it, which isn't a trivial task. It's in my book a very rewarding experience.
Some people don't like 4 space indentations, some don't like using tabs, and in most cases there's just an icky feeling behind it. Who's right?
In your own post, you give a reason for why you think (and not feel) it is wrong, and that's the right way to do. Icky feelings aren't. Maybe people saying that it feels wrong are crossing a line too?
You can be intuitively against something, but not be able to work out why. A few hours later, you often realize the rational reasons behind your original feeling.
Though I did make one (hopefully reasonable) point that it fuzzes the lines between code and explanation of that code, which I don't care for. The article also gives a valid reason that tools are not expecting this and won't correctly accommodate (though that could be considered a short-term problem).
Sure. I read it as "there is something wrong with it, but I can't pinpoint what", which is fair enough in my book. It's not like this is the lynchpin of the article.
Some people may not be familiar with C macros, and an example could help grasp the problem you're talking about.
You could have pointed out all the things that are done in the C obfuscation code contests, to illustrate your point, but maybe this is silly. Also, you start your point from the spaghetti code hell that C macros let people fall into (I guess you where thinking about #ifdef conditionals), but I don't see how annotations could generate that problem. Imho, your point is flawed.
C macros are useful, and when not misleadingly used, very effective at abstracting things in order to get the important structures apparent. That is what annotations attempt to provide. Regarding PHP annotations, the problem here is that it's difficult and time consuming to parse a PHP script, whereas comments are an easy target. SensioLabs went the easy road, perhaps also in the hope that someday annotations would find their way in PHP, and people would just have to remove the comments around them to be compliant.
Yeah, everyone can say: I am a good team player. And every HR can say: Our company provides the best working environment. Hypocrisy on either sides leads nowhere, but it seems like it's still the expected standard.
I think that a linkedin profile can be enough. And if the profile isn't publicly accessible, there might be a good reason: privacy. So why not simply ask? At least it would show that the application is being processed. Or perhaps there's an option somewhere on Linkedin which let a user directly grant access to his profile to people handling job offers when they apply, and you just rant about those not seeing that option.