Hacker News new | past | comments | ask | show | jobs | submit | sctechie's comments login

The 'magic' that you seem to pine for like is found in lets say Ruby, places a far larger mental burden on the programmer than a language like c or go.

Sure, language like Haskell or Rust have a ton of great features and automagical things but I disagree that they are easier to use. One has to keep far more in your head writing Haskell than Go, a clear indicator of this is the difficulty in learning the language. Like c, you can learn Go in a weekend easily.

I am not saying those others types of languages don't have their own strengths, just that I disagree with your assessment that their features provide a lower mental load.


> One has to keep far more in your head writing Haskell than Go

I don't think that's really true. I think that's a subjective description of a feeling whose presence or absence depends not how any objective difference in the quantity of things that you need to keep in your head with either language, but with how well each language fits one's (subjective) intuition.

Mental load isn't an objective feature of a language, its a subjective feature of a particular programmer's relationship with a language.


I don't think you can really learn C in a weekend. Not with all the ins and outs of undefined behavior. And if you don't know your way around the undefined behavior in C, you're going to make dangerous mistakes.


For various meanings of 'learn'. My point is that you can be writing useful programs in c in a weekend.

Obviously said person would not be an expert, but I've watched competent programmers try to learn complex languages like Haskell and Scala; there is a far more complex mental model that one needs to build before they can use those languages specifically because of all the automagic that happens in the background.


Having watched both complete beginners and competent programmers try to learn Haskell my observation is that hard part initially for the competent programmer is not building the necessary mental model, but tearing down their existing mental model. People with no mental model going in tend to just look at Haskell, go "I guess that's the way things work", and get on with it. Their real problems first arrive when they then go on to try to learn for example Java which has an entirely different model.


> My point is that you can be writing useful programs in c in a weekend.

We'll need to define criteria for "useful program" but I believe most people could write useful programs in most languages in a weekend.

> I've watched competent programmers try to learn complex languages like Haskell and Scala

> far more complex mental model

I think its more that those languages are different, not that they require a more complex mental model.


Can we at least agree here that complexity implies a larger cognitive burden? I think that's a pretty benign statement to begin from regardless of the domain (programming, cooking, games, etc).

A complex recipe rewards a chef with exceptional results if they follow it perfectly, but also presents more opportunities to fail. A simple recipe might not offer the results but it should be easier to produce with a lower chance to mess up.

I think the concept generalizes here.


> Can we at least agree here that complexity implies a larger cognitive burden?

Right, but remember simple doesn't necessarily mean easy. The reason I use functional languages is because in my experience they handle complexity better.

> A complex recipe rewards a chef with exceptional results if they follow it perfectly, but also presents more opportunities to fail. A simple recipe might not offer the results but it should be easier to produce with a lower chance to mess up.

> I think the concept generalizes here

I of course mostly agree to both of the above, but I think you are mis-characterizing functional languages such as Haskell which are simple but quite different from languages most are used to.


> A complex recipe rewards a chef with exceptional results if they follow it perfectly, but also presents more opportunities to fail.

Agreed, which is why I prefer to implement complex ideas in Haskell. It catches more potential errors than other languages.


I strongly disagree that features don't lower mental load. For example:

Go's error handling is to put it nicely a joke and requires a lot of effort to manually check every single error condition that may arise. Exception handling makes life exponentially simpler. You can ignore, group and delegate errors at any point which is hard if not impossible to do with Go.


'Industry Best Practice' in this case amounts to 'we will hand all of your data over to the government' if required.

Abdicating responsibility for personal security to ANY 3rd party makes one less secure, period.

Now, when the government comes knocking, instead of handing over some files or access records, you'll be able turn over the user entire computer. That's the exact opposite of security to me.


Stop charging for your time and start charging for the value you are providing to the business.

If you implement a system that will increase revenues, you should be charging based on that value. Just because you're implementing some back-end system does not mean you're not having an impact on the bottom line. Sounds like you've gotten stuck into thinking your old clients are your friends. Do you not have the confidence to pursue / win new clients if you're 'key' clients disappear?


How is this even possible? All it takes is a clogged router buffer 'somewhere' along your network path and that <30ms web request is gonna get blown away. Am I missing something here?

I'm probably just being ignorant lol. Can you point me to an example company offering a service like this?

Thanks.


I can't, but you could for example look at the financial services industry or providers of real-time data feeds.

In general these services are not available through the public internet so routers with clogged buffers are not usually an issue. But it depends on the SLA.


I recommend buying a piece-of-shit Dell and putting an aftermarket SSD + memory in there. Personally, I develop on cheap Dell slammed full of RAM running a Linux VM inside of Windows. I know the 'cool' kids aren't into Dell and Windows and all that but you can get a faster machine for less money if you stay away from Apple.

Unless you are running a server, there is no reason to be running Linux directly on your hardware. You can, of course, but it's not a good idea.

I'm not a Mac fanboy so take that for what you will. I look at these fanboy 'bro' developers running around with overpriced hardware and laugh. You might not have the same reaction.


Same - windows offers reliability, especially when your hardware drivers get forgotten when they no longer work with updated software and updated kernel down the road.

I run CLI Arch Linux in a VM and use samba for shared folders. Usually I just end up coding right in the SSH terminal. You also develop good habits when it comes to deploying to a production environment, plus capable of managing multiple environments and keeping them separate.

Edit: BUT, for Ultra Books, I am looking at buying an Asus Zenbook Touch UX31A with an i5. Top quality build and nice keyboard, has great reviews. The Dell XPS ultrabook looks good too, but doesn't have the same quality as the Asus.


Unless you are running a server, there is no reason to be running Linux directly on your hardware. You can, of course, but it's not a good idea.

What a bizarre statement. It works quite well if you prefer the Linux environment and don't require specific software only available on another OS. Just because some setup works well for you doesn't mean it is appropriate for everyone.

I have both Windows 7 and Linux laptops and prefer Linux from a maintenance standpoint and from a driver standpoint. Usually, if Linux drivers are supported they are supported very well. With Windows things appear to be less uniform.


I work like that when I need to run other stuff on the Windows side. But that's on my monster desktop machine.

Now I want to buy a small ultrabook, and on that, running 2 OSes sounds suboptimal. It might work of course, but I can't try it before buying, so I don't really like the of risking. I want a good machine, that is known to run linux well.

And no, I don't want a cheap 1366x768 screen and crappy keyboard. Yes, I can live with cheap CPU, RAM etc. And in fact the best machine for me would be with good screen/kbd and cheap everything else. But no one manufactures such, at least to my knowledge :(


I've tried developing on a remote dedicated server via PuTTy, VM under Windows (VMWare and VirtualBox), and a native Linux OS. The native Linux OS destroys the other two options by far. I just couldn't handle the slight delay you get in a VM when it comes to the mouse, keyboard, etc. I just really didn't care for it.


Look well-made. I've never seen that brand in any US stores unfortunately. There were a few US distributors listed but most were tiny shops.


We've ordered thousands of dollars worth of stuff from roc-noc.com over a couple of years. Chatted on the phone with them a bit too. I'd definitely vouch for them if you're looking to make an order.


Let me just get this in before the cries of JUST INSTALL OPENWRT come raining down.

Your mother / father / grandmother / etc are not installing openWRT on their routers. Installing one of these CISCO home routers is pretty much hacking yourself. And, just update the firmware is not gonna work.

Try it one day, go up like 10 people and ask them what's a firmware. If the user isn't technical, you're going to get a 0/10 correct responses.


>Your mother / father / grandmother / etc are not installing openWRT on their routers.

My mother / father / grandmother / etc are typically not buying the routers. They are saying things like, "next time you visit, can you fix my internet?" Or, "since you're here, can you check what's wrong with the internet? I can't get it to work." which is when you install and configure the xxxWRT device for them.


Maybe they should just ship with the alternative firmware installed if the open source is doing a better job?


I've read (but haven't personally confirmed) that Netgear used skinned OpenWRT on some of their routers (like the wndr3700v1)


It is true http://www.myopenrouter.com/ is their info page. They make it really easy to flash, and provide specs as well so they are well supported so you can use a different version, but it does ship with it too.


Have a look, quite a few mfrs have products that either ship with DDWRT or at least advertise "support" (I guess they mean compatibility?) for DDWRT.

http://www.amazon.com/s/?url=search-alias%3Delectronics&...

http://www.dd-wrt.com/site/index


I'm old enough to remember DHTML, it was terrible.

It's quite remarkable how far front and back-end JS development has come since then.


Great post. People should stop and read this.


Your lack of ability to google or search on your own is a bit worrisome, but I spent a few minutes doing your work for you. =)

There 18k+ open source repos on github for c#: https://github.com/search?l=C%23&q=c&type=Repositori...

There are 44k+ open source repos on github for java: https://github.com/search?l=Java&q=c&type=Repositori...

I'm not even gonna bother for Asp.Net.

Now, for some real advice. 'Open Source' and microsoft don't exactly go together like peanut butter and jelly. Yes, there are some open source projects for the MS ecosystem but it's just not in the culture.

If you don't want to transfer your current skills to the Linux world, you should find a large, open source c# project and just run with it.

Good luck.


I think: By saying "appropriate" he wasn't really asking how to find open source projects in his language of choice, but how to know which ones will eventually get him noticed, or how to pick the open source project that seems to have meaning to other people, etc.

It appears that the op may have had a stroke of good luck by picking the perfect OS projects. It would be a bummer to extend yourself in an area that nobody cares about if the whole purpose were to get noticed.

If using Open Source as a self-promotion tool, it's important to choose wisely.


What's important is getting noticed by whoever you collaborate with. That helps you form a network. It doesn't have to be a high profile project it just has to help you form a network of friends who know you and can vouch for your work.


Yes! Exactly. Thank you for understanding what I meant.

I want to hear about the decision process behind how or why Zaphar chose the open source project he did, and how others here choose their open source projects?

Just a little advice, so that I too (and others reading), can (wisely) choose our first open source project to contribute to.


I just chose what I liked and had fun with. Hung out with people working on Blender. Hung out in the perl IRC channel on freenode. Hung out with a group doing an Open Source game called Planeshift which wasn't high profile in any way but it gave me experience. And put me in contact with people who had connections.


Hah I really like the IRC idea (especially since I don't know anyone like you do). Just joined the Ruby channel as a test at: http://irc.lc/freenode/ruby-lang


As an example of an excellent C# program that's pretty widely accepted in Linux/Gnome, why not take a look at Tomboy Notes? http://projects.gnome.org/tomboy/

There are lots of opportunities for addons/etc, and it's reasonably extensible. Could be a great first project.


Thank you.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: