Lmarv-1: A RISC-V processor you can see. Part 1: 32-bit registers - <AUTHOR> https://www.youtube.com/watch?v=yLs_NRwu1Y4 <comment><AUTHOR> Also:

LMARV-1 (Tangible RISC-V) Part 2: Redesigning and testing the register file [https://www.youtube.com/watch?v=W-B32C_jKbA](https://www.youtube.com/watch?v=W-B32C_jKbA)

LMARV-1 (Tangible RISC-V) Part 3: Designing the ALU [https://www.youtube.com/watch?v=KGBUtKRBKZs](https://www.youtube.com/watch?v=KGBUtKRBKZs)

LMARV-1 (Tangible RISC-V) Part 4.1: Designing the shifter [https://www.youtube.com/watch?v=SuUChAF3gaw](https://www.youtube.com/watch?v=SuUChAF3gaw)

LMARV-1 (Tangible RISC-V) Part 5: A horrible mistake, and memory [https://www.youtube.com/watch?v=uerjjKOmO94](https://www.youtube.com/watch?v=uerjjKOmO94)

LMARV-1 (Tangible RISC-V) Part 6: ALU, testing, instruction controller [https://www.youtube.com/watch?v=_Uzxi_MFtP0](https://www.youtube.com/watch?v=_Uzxi_MFtP0)

LMARV-1 (Tangible RISC-V) Part 7: Testing the tester boards [https://www.youtube.com/watch?v=HbKT- WX8Pmc](https://www.youtube.com/watch?v=HbKT-WX8Pmc)

LMARV-1 (Tangible RISC-V) Part 8: Testing the revision D ALU [https://www.youtube.com/watch?v=zeYNixZqgko](https://www.youtube.com/watch?v=zeYNixZqgko)</comment>


What Makes Good AI? – Game Maker's Toolkit - <AUTHOR> https://www.youtube.com/watch?v=9bbhJi0NBkk <comment><AUTHOR> Thought this was an interesting video about AI design in video games, and a good counterpoint to the idea that smarter game AI is always a positive thing.

In other words, good video AI is designed to make the game more fun for the player, not just realistic in any particular sense.</comment>


Multi-millionaire startup founder throws 29th birthday party...with 300 homeless people - <AUTHOR> http://www.mercurynews.com/ci_9179020?source=most_viewed This is why we love startups, right guys? <comment><AUTHOR> This is why we do startups, right guys?

<comment><USER2> It does seem like having the time and money to help more than just family and friends is one of the great luxuries wealth brings.

</comment></comment><comment><USER3> This was a great thing for him to do but I am a bit disturbed that it was made public. I think that such acts of charity should remain private and not aired to everyone- gives the donor more of an opportunity to become arrogant.

<comment><USER4> Oh, no.

People need to know that these things happen, that there are people out there like this. It's inspiring.

Who gives a fuck if the dude is arrogant or feeding his ego (assuming that is even true)?

He's feeding 300 homeless people as well.

</comment></comment><comment><USER5> I have no comment that an act of charity is reported with such ego, but this line kills me:

 _The kids each got a toy and some treats._

Am I the only one that finds it completely unacceptable that we have _children_ eating at a charitable kitchen in this day and age? Something is definitely wrong with all of us.

<comment><USER6> Why would you consider to be "acceptable" to have adults in need of private charity, but not children? What about teenagers?

If you are going to lecture us, at least don't do it using relative morality.

<comment><USER5> I would consider it "acceptable", because an adult certainly bares a certain level of responsibility for his/her actions, whereas a child is more a victim of circumstance, really.

It was just a rant, and certainly not a lecture (I include myself as part of the problem). I don't have a solution, but I can't help but put my son in the soup kitchen line with a toy truck and feel that there is anything just about that.

<comment><USER6> What if the child is the son of the adult that is failing with his/her responsibility?

\- Should we take the child away of the adult?

\- Should we let the adult have an incentive for having more kids, knowing that the children will always have someone that will be willing or obliged to help and provide?

You don't have a solution. Me neither. Because _there is none_.

You can't stop irresponsible adults of having kids. You can't multiply wealth infinitely and guarantee that everyone will always have a baseline of resources to live by. Heck, even if you wanted to provide a better life for a child that is a "victim of circumstance", you'll have to get the parent's (or legal guardian's) consent.

</comment></comment></comment></comment><comment> daniel-cussen What an awesome thing to do. He's the man.

</comment><comment><USER7> Def getting some karma for that, glad to hear of good being done.

</comment><comment><USER8> I'm sure the dog enjoyed his bone.</comment>


Scientists urge search for signs of alien life on Moon - <AUTHOR> http://www.smh.com.au/technology/sci-tech/scientists-urge-search-for-signs-of-alien-life-on-moon-20111227-1pauv.html

<comment><USER2> This quote:

"Hundreds of thousands of pictures of the moon will be examined for telltale signs that aliens once visited our cosmic neighbourhood if plans put forward by scientists go ahead. Passing extraterrestrials might have left messages, scientific instruments, heaps of rubbish or evidence of mining on the dusty lunar surface that could be spotted by human telescopes and orbiting spacecraft."

Reminds me of this image:

<http://tombsofkobol.com/films/silent/lune_01.jpg>

</comment><comment><USER3> Lot of images and lot of amateurs will produce lot of charismatic false positives that will be hard to kill, like the Mars "Face": [http://www.google.com.ar/search?&q=mars+face&tbm=isc...](http://www.google.com.ar/search?&q=mars+face&tbm=isch)</comment>


Business Cofounders, Go Fuck Yourselves - <AUTHOR> http://throwawayhn.wordpress.com/2011/06/10/business-cofounders-go-fuck-yourselves/

<comment><USER2> I agree with all your points and would like to hire you to code up my idea for mashing up internet memes and home improvement supplies. I have already purchased the domain name: lolcatphotosharinghomedepot.com. Although I have made this much progress already, I am prepared to offer you 5% equity in this endeavour. The combination of my prestigious Harvard MBA and my 1 year of consulting experience at prestigious Bain, Co. will assure our success. Please let me know when we can begin. Your first step will be to deploy an Oracle/Microsoft cloud server in the cumulonimbus formation off the coast of East Africa to handle the user traffic that I am sure will arrive shortly.

<comment><USER3> lol, you forgot the NDA signing part

</comment></comment><comment><USER4> I understand where you're coming from. As other people have said (including yourself), this post is directed at a certain subset of business guys who don't bring anything to the table and demand too much. I certainly agree with you (I'm a current finance major who is learning to code so I can put out my own MVP and not be the person you describe), and I see these types all the time.

</comment><comment><USER5> "And no, outsourcing an MVP and paying for that, and coming up with the idea is not a huge value prop."

I actually read through the cursing.

<comment><AUTHOR> LOL sorry about the swearing. Was just frustrated when I was writing that.

</comment></comment><comment><USER6> I don't think you're really describing business co-founders but instead just the want to be entrepreneurs who are out of work. People who are all talk are everywhere in the workplace and society and of course you will find them in the startup world. No way to get rid of them, so just ignore.

</comment><comment><USER7> Telling all business co-founders to go f--- themselves because a few are jackasses is like telling all the women of the world to go f--- themselves because a few broke your heart. I know you put a disclaimer at the top of your post to soften the blow, but still... Odd.

<comment><AUTHOR> It was really targeted towards the business cofounders who exhibit the things I listed, not everyone as a whole. I made an edit to the post earlier to reflect that I think there is a strong value proposition of a _good_ business cofounder. Unfortunately, majority if not all of the ones I've encountered are all like the people I've described. Each having faults in their own way that reflects the type of things I wrote about. No one is perfect and I believe we're all here to learn and by doing. I just wish these particular business guys (for lack of a better term) would realize there is more they can do.

</comment></comment><comment><USER8> Wow a real flame bait. i suggest another topic to discus here on HN:any monkey can learn to code, and read manuals all day lon. some monkeys get an ego and start thinking that. they are somehow more hardworking or smarter. not true. you just a monkey that can read and obbey instructions in the book.

<comment><AUTHOR> It's not a flame bait. I'll gladly do one on the flipside later. Technical guys looking for a cofounder aren't all perfect either. Far from it. It's just between the two sides, I run into more problems with the business cofounders.

<comment><USER8> Excellent response, to my flame-bait about monkeys in the first comment :) I personally respect technical guys more than the said business co-founders...</comment></comment></comment>


We chalked SF to promote our startup - <AUTHOR> https://www.kapwing.com/blog/what-happend-when-we-chalked-sf/ <comment><USER2> Maybe consider making the chalking process part of the advertising.

Check out chalk printer: [https://hackaday.com/2014/08/29/the-chalkjet-an-ink- jet-prin...](https://hackaday.com/2014/08/29/the-chalkjet-an-ink-jet-printer- for-the-streets/)

And chalk bot: [https://hackaday.com/2009/07/09/chalkbot-vs- graffitiwriter/](https://hackaday.com/2009/07/09/chalkbot-vs-graffitiwriter/)

You could make one of those. Everyone love funny robots.

</comment><comment><USER3> Zynga already got sanctioned for doing that in 2010.

If a product or service is so lame that the company has to resort to vandalism, it's admitting irrelevancy.

<comment><USER4> See also [https://www.zdnet.com/article/ibm-gets-100000-fine-for- peace...](https://www.zdnet.com/article/ibm-gets-100000-fine-for-peace-love- and-linux-campaign/), although perhaps the comparative permanence of the ads increased the fine:

> Ad firm Ogilvy & Mather spearheaded the campaign for IBM, hiring people to > paint sidewalks with the stencils in a black chalk that was supposedly > biodegradable. However, after several months, many of the stencils could > still be seen.</comment></comment>


New school C - <AUTHOR> http://radar.oreilly.com/2012/12/c-programming-language-ben-klemens.html <comment><USER3> We use C quite heavily at Bump in our mobile apps. With our recent app Flock, we wrote nearly all non UI logic in C to be shared between iOS and Android. This made moving to a new platform much faster and easier than in times past. A lot of this core code is also used on the server to manage incoming connections from the clients as well.

Aside from the ability to share code, it also makes sure that we are not using anymore memory than we really need. Avoiding unnecessary GCs is an important concern in writing performant Android Apps. Having the core C layer only hold on to as little memory as possible is a huge win.

On a less objective note: When I left undergrad I thought I'd never write C again, but it was such a pleasure working with it again. Knowing (almost) exactly what operations your code is doing is quite liberating after working with so many other higher level languages and frameworks.

<comment><USER4> > Knowing (almost) exactly what operations your code is doing is quite > liberating after working with so many other higher level languages and > frameworks.

This is exactly why I still enjoy programming in C so much. Even compared to other languages that I adore and voluntarily use often, programming in C and programming in anything else feels like the difference between treading water in a swimming pool, and treading water in a murky lake. I just have a just a much greater, rather comforting, sense of situational awareness while using C.

<comment><USER5> I have this same sentiment, but I use C++ just because templates, classes, smart pointers, lambdas, and namespaces are such huge productivity gains.

<comment><USER6> I keep on thinking I want to pick up C again (made a living with it 20 years ago), then I remember all the goodness that C++ adds (made a living with it 10 years ago), then I remember that C++ is huge and cryptic and I get all depressed again.

<comment><USER7> Learn Lua. I went through the same basic phase as you described, and once I'd gotten my competence with implementing Lua bindings up and running, I never looked back. For me, Lua+C is the most elegant combination of language tools I've used, and as a developer with 30+ years of experience, I've used most of them.

Lua really, really rocks - especially if you look at it as the domain tool it is, and not the prepackaged broad-spectrum scripting language that many people consider it to be ..

<comment><USER8> What do you use for basic data structures in C? Stuff like hash map, priority queue, sorted set, etc.

<comment><USER7> Fortunately, it is very easy to implement these structures in Lua, if they haven't already. The basic datatype of Lua - the table - can be treated as a hash map, a sorted set, a priority queue, very, very easily .. in fact if you think these things need to be implemented in C, you're missing a big part of the picture with Lua. The power of Lua as a language is really derived from the "morphological" nature of the basic table datatype .. Lua has all of the structures you're asking about, already.

And anything it doesn't have, which one would truly need to derive from the C/C++ side, is a few simple binding calls away .. but anyway, tables will do all you ask, and more, if you learn to use them properly.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Languages are among the more religious topics in modern computing, and sometimes it can be hard to talk about them without immediately provoking a tedious flame war. I can only say that for myself, after programming for twenty years in every hot language you can name (really), that I now find myself going back to C more and more.

Why? Because while others are writing Javascript-like languages that compile to Javascript, debating the merits of Rust vs. Go, insisting that a language without monads is unusable, arguing over whether a language without support for multiple inheritance can be "real OO," claiming that homoiconicity leads to mystical union, and proudly stating that x language is "almost as fast as C" -- while all of this is going on, there are legions of people who have been quietly building nearly every significant piece of the infrastructure of modern computing in a language that is now over forty years old.

They don't whine, they don't go chasing after "frameworks," and they don't succumb to the twenty-one-days model of learning. They just build shit. Lots and lots of it. In fact, you're all soaking in it.

Like I said, it's a religious subject. But as for me and my house, we will use C.

<comment><USER10> I read these types of comments by some people from time to time, usually from programmers who have been in the industry for a long time. They're always semi-derogatory towards new technology and carry a disclaimer the author has used said technologies. But, always, old ones are better. Usually for the sake of being older, not any inherent quality the comment has elicited.

I love C above almost all languages you subtly referenced. I disagree with a lot of what you said, and a lot of what you implied. I just wish I never become that guy.

<comment><USER9> "I just wish I never become that guy."

But hopefully you will, and I can tell you why.

After a _long_ and painful apprenticeship, you finally realize that being a great programmer has nothing to do with the language or its features. You get to the point where you're completely done learning this or that new technique (which, by the way, is nearly always an old thing for someone else). Your "profound enlightenment experience" with Lisp is ten years old; your copy of Design Patterns looks like an old Bible; you've had dozens of dirty weekends with stack-based languages, declarative languages, experimental languages, etc. You've been all of those places and done all of that. Many, many times.

At that point, the pros on cons have fully evened out, and what you want is a tool that you can completely and totally master. You've stopped searching for tools without warts, edge cases, and gotchas, because you know those _do not_ exist. What matters is community, ancestral memory, stability, maturity, docs. Above all, you just want to build something really great.

It is at that point that you become that guy. You might well turn to C, as many before you have. Maybe, maybe not. Lots of us have.

We aren't crusty old neanderthals, though. We're just at the logical end of the process.

</comment></comment></comment><comment><USER7> I've been a C programmer since 1984, and have been happily ignoring a lot of new-school language fads as a consequence. I've found that there's very little reason not to use C - it is small, it is fast, and with 30+ years of experience now, I don't get tripped up at all by any of its thorns.

For me, now, new school C can be expressed in one word: Lua.

Everything I need C++ to do, I can get Lua+C-bindings to do easier, with less fuss, and more productively in the short as well as long run due to the ease of use of the language. For almost every modern project I've worked on, the combination of a powerful C library collection and the Lua VM wrapper to make it all scriptable has been absolutely unbeatable.

Sure, I write Python .. I've done more than my share of Ruby projects, and I could definitely spend a few years working in pure C++ if it were necessary. But the point is that none of these languages have been necessary recently, with my Lua+C skills ..

<comment><USER11> I'm curious, could you write a bit more about how you do this? Do you write Lua programs with performance-intensive parts written in C? Or more like C programs with some component wiring in Lua? Where do you draw the line, and why? And what kind of software do you make this way?

<comment><USER12> As a newbie C developer I'd for one would really appreciate a follow-up to this if primitur has the time.

<comment><USER7> Write a nice, clean C library and export a decent header. Then, use the tolua tool to read that header and generate the bindings for the Lua VM. Build the LuaVM with those bindings, and suddenly you have the features of your C library available to you within the Lua language environment.

There are some great tutorials on this, here are a few I found with google-fu:

<http://lua-users.org/wiki/BindingCodeToLua>

<http://csl.sublevel3.org/lua/>

[http://www.nicolasgoles.com/2012/08/03/lua-tutorial--- c-bind...](http://www.nicolasgoles.com/2012/08/03/lua-tutorial--- c-bindings.html)

[http://www.gandogames.com/2011/01/tutorial-using-luabind- to-...](http://www.gandogames.com/2011/01/tutorial-using-luabind-to-integrate- lua-with-cc-pt-1/)

I think you will see, once you study the above, that there is a vast amount of power available to you. The Lua VM, written itself in pure C, is an utter joy to behold, and I encourage every new C programmer to inspect the Lua VM sources (its only about 12 files..) and see for yourself just what it has to offer you. C+Lua can be a very, very powerful tool .. and anyone learning C today would benefit greatly from also doing some Lua bindings, themselves, to see what I mean ..

<comment><USER7> I just wanted to add that the LOAD81 project is another great way to learn Lua:

<http://github.com/antirez/load81>

(Yes, _that_ antirez..)

I strongly encourage anyone who wants to learn Lua to check out LOAD81 - its a lot simpler than MOAI, but reflects the same basic principles.

</comment></comment></comment></comment></comment><comment><USER13> Why do people act surprised that C and C++ are still as viable as ever, and still very widely used?

Do they not know that basically every important piece of software today is still written in those languages?

Has this realization somehow been lost over time with the rise of languages like Java, PHP, JavaScript and Ruby, even though the major implementations of those languages are themselves built using C and/or C++?

<comment><USER14> > Do they not know that basically every important piece of software today is > still written in those languages?

A blatant overstatement. There's lots of important work done for the CLR (MS, many others), Java (Sun, Google, Amazon, bits of Facebook, IBM, etc, etc) or in Python (Dropbox) or in Cobol (banks...sigh). Yeah, there's plenty of important C/Cpp code but it's probably in a minority of "important", even if important just means "commercial" or "popular".

<comment><USER15> I disagree. Most operating systems, desktop applications, web browsers, and fundamental Internet services (web servers, BIND, MTAs, etc) are written in C/C++. Dropbox is not in that league of important.

<comment><USER14> So you're arguing with me over what "important" means. If "important" means nearer the bottom of the stack, then yeah, you win. I doubt many people see it that way though.

<comment> paul-woolcock If by "bottom of the stack" you mean "the code that the top of the stack depends on in order to run at all," then I would say that he is correct in what "important" means.

<comment><USER16> Infrastructure only exists to enable applications, though it's easy to lose sight of this as a software engineer.

</comment></comment></comment></comment></comment></comment><comment><USER17> When I look at the page of the book itself

[http://shop.oreilly.com/product/0636920025108.do?intcmp=il-c...](http://shop.oreilly.com/product/0636920025108.do?intcmp=il- code-books-ben-klemens-code-podcast)

what I noticed was

> Use Autotools, C's de facto cross-platform package manager.

Seeing the word "autotools" sends familiar, but scary shiver down my spine. After some years with maven and CPAN, I don't ever want to go back to autotools, no thanks.

<comment><USER18> It's also hard to think of anything less new school than freaking Autotools. There's a good kind of old school (C, UNIX, Audrey Hepburn) but Autotools isn't it.

</comment></comment><comment><USER19> C is still my favourite language of its style, and so far I also worked on C++, C#, Java, and Python projects. None other is as simple and direct.

Looking at the book's TOC it looks like there's a bunch of interesting ideas in there, I'm tempted to pick it up.

<comment><USER20> FWIW, some of the advice in the book is pretty bad. The most unbelievable is to ignore memory leaks under 100Kb, but there are a lot of other examples.

The first half of the book covers Git, autotools, Makefiles, and random topics tangentially related to C. If you're unfamiliar with those, it's an okay introduction to them, but there's some dubious advice in those sections, too.

<comment><USER21> Thanks for sharing. Now I know not to waste time on the book. If I want to learn about Git, I'm not looking to learn it from a book about "Modern C".

</comment></comment></comment><comment><USER22> I wrote kernel-level code for quite a few years. There, barebones C makes a lot of sense. (I can make a case for a subset of C++ that avoids many C++ issues, including use of RAII and similar things that get you into trouble in environments where /nothing/ is free, and you have to think carefully about the teardown strategy of every single allocation).

Don't confuse "easy" with "simple". That's my latest mantra.

<comment><USER23> > _a case for a subset of C++_

Do elaborate. I come from the same background and I've been contemplating forking C for several years now. What you said sounds all too familiar to my own reasoning, so I'd be very curious to know what you have in mind. In broad strokes.

<comment><USER24> Take a look at the C++ coding standards adopted for high-reliability areas. For example, the coding standards for the Joint Strike Fighter: <http://www.stroustrup.com/JSF-AV-rules.pdf>

<comment><USER22> Those were mostly good (a little bit of crazy, but not much).

The Google guidelines are okay for non-kernel work. I've worked on three teams that have independently converged on very similar guidelines (at Apple, a start-up, and a group in Microsoft). I find that convergence quite interesting.

</comment></comment></comment></comment><comment><USER25> I love programming in C, however I'm getting the impression that right now almost every open job position is for java/.net/web developers. Besides embedded, where are C programmers needed?

<comment><USER26> Finance, mobile, desktop applications. In my (limited) experience most people use a C++ subset though.

</comment></comment><comment><USER27> C is a great language. I first learned programming with C back in college. After a few years off, I decided to pick up programming again but there aren't many resources for learning C. Most of the tutorials out there are for Ruby and Python. I have been learning Ruby for a while now and I'm now starting to go back to using C.

I think if there were more educational websites teaching C, more people would use it. I think new programmers will appreciate coding a lot more if they learned C instead of using Ruby.

</comment><comment><USER28> > today's programmer can even go so far as to question the usage of malloc

In old school or new school C, there's every reason to minimize the use of malloc and it's easy to avoid.

<comment><USER23> Do give the top 5 list of such reasons.

<comment><USER29> I'll give one for old-school: heap fragmentation. You can't fragment a stack, block allocators have predetermined fragmentation behavior, heap is "who knows" It is possible to malloc() and free() for a very small net-total, and yet be no longer able to allocate a contiguous region that is a significant fraction of the heap.

With a modern VM system, it's not quite as big a deal since your heap is effectively infinite for many applications. It is still an issue on embedded systems, and was a problem back in the day too.

<comment><USER12> Question from a newbie C developer: How can you avoid using malloc? Are you finding some clever way to do everything on the stack? Or are you perhaps allocating a large block of contiguous memory and slicing it up on your own?

I've heard of both of those approaches and they sound pretty hard, so I'd be interested to hear your thoughts/be pointed to good references on the topic. Thanks in advance.

<comment><USER18> A lot of the time, the nature of the data and its lifetime makes specialized allocators easy to use. Not infrequently they can actually be more convenient than malloc/free when you have a bunch of allocations (think nodes in a parse tree) with the same lifetime, so their storage can be released as a single operation. For that example, you can get the same usability with a more traditional malloc/free interface using something like hmalloc, but if the parse tree nodes all occupy the same contiguous block, you get it automatically. And of course it's a lot faster to release a single block (if you release the storage back to the OS, the page manager will still have some per-page work for a virtually contiguous block of memory).

Basically, once you have a nailed down system design, it's usually not any significant extra work to use custom allocators. Where it can suck away your productivity is during iterative design and development where you're still figuring out the different kinds of data, what subsystems exist and who owns what when. But in that scenario, garbage collection is even easier than malloc/free, so it's not a mortal sin to use Bochs or just leak memory (heresy!) if you can get away with it--only temporarily, of course, while you figure out the design.

</comment></comment></comment></comment></comment><comment><USER30> _There is quite simply a vast array of libraries out there that every developer has access to. As Ben points out at the 10:50 mark, looking at GitHub we can find something on the order of 150,000 C projects._

That's great, unless your employer/client/etc. is allergic to open source. I really can't consider something part of the language unless it's in a standard library that comes out of the box with the major compilers.

<comment><USER4> Most anything that you might want will be BSD-style licensed without the attribution clause. If your employer is allergic to that... then your employer is an idiot. GPL'd, even LGPL'd, libraries are fairly few and far between.

</comment></comment><comment><USER31> So learning C is on my list of things to do in 2013. I'm pretty experienced as a programmer, but mostly higher level languages than C.

Would this book be a good place to start?

What other recommendations could experienced C programmers offer. I'm not simply asking about the language, but best practices for memory management and toolsand above all, practical advice.

<comment><USER32> IMHO you're not an experienced programmer, but there will always be someone below you on the stack, so I should shut my loud mouth before someone puts my words in it.

To your request, this is not a good place to start. By the table of contents, it appears to assume a working knowledge of C.

Here are some ideas you can use to design your own "teach me C" course.

Read K&R, and write some simple toys. Write your own "cp". Handle some errors, add some options. Try out fread(3)/fwrite(3), then try read(2)/write(2).

Then write "mv" and do the same. Now make it fast within a filesystem. Or work across filesystems (depending on your first implementation).

Then write an encryption or compression program.

Now write a simple library, make a red/black tree. Store ints first, but then later, store generic objects (design your API carefully!). Make two iterators, one using a callback and one using a next() function. Decide which you like better.

About now you may start to find your development environment lacking, do you use Make? Autotools? Something else? Go learn one and update your old projects to use it. While you're at it, write some tests for them. Did you handle command line options for your version of "cp"? Did you use getopt_long(3)? Might be a good idea. Oh by the way, does it support "-R"? Hmm...and your tree isn't reentrant either, better go learn about pthread locks.

After a while, you should start learning some other libraries (because you want to do real work): curl, libxml, sqlite (hey these are in that book!). Study their code, their build systems, their test harnesses (oh man, especially sqlite's) and incorporate the ideas you like into your own work. Use them to build something cool, maybe a web crawler or whatever.

Do you like music? Learn an audio library and make something. From here, you should direct yourself to what you like building, because you probably have enough tools to do the learning on your own.

HTH

<comment><USER33>
        Read K&R, and write some simple toys.

The comp.lang.c FAQ was very helpful when I taught myself C using K&R. It answered most of the questions that I had that I couldn't answer with K&R alone. I ended up reading the FAQ straight through because it was so helpful.

<http://c-faq.com/>

<comment><USER32> Oh most definitely. Can't believe I forgot it.

</comment></comment></comment></comment><comment><USER34> And here's a review of '21st Century C' from Andrew Binstock at Dr. Dobb's:

[http://www.drdobbs.com/architecture-and-design/developer- rea...](http://www.drdobbs.com/architecture-and-design/developer-reading- list/240145159#)

Note that the review is on Page 2 of the article.

</comment><comment><USER35> I have seen no system failing because it used C instead of C++. But I have seen many systems failing because of the improper use of C++.

\- <http://syncfin.com/facebook-promote/>

<comment><USER36> Systems in C are not as ambitious, for good reason. So not a fair comparison. I've never seen a gingerbread house fall in; but lots of wood ones do!

<comment><USER35> This might enlighten !!

[http://unix.stackexchange.com/questions/23634/while-there- is...](http://unix.stackexchange.com/questions/23634/while-there-is-c-why- most-of-linux-programs-are-written-in-c)

<comment><USER36> No, that does not enlighten. I've written OSs, kernels, embedded systems - <USER2> C++. Because its a better language for those applications. The arguments in that link are spurious - just sound bytes to make the author feel better.

In no case does C++ require any more runtime than C. You can use little or no runtime at all in either language, with minimal effort.

Easier to write low-level in C? This is unsupportable. C++ can write anything you can write in C (its a superset), so anything possible in C is possible in C++, but now you have more leverage.

<comment><USER35> That's what even I am saying : It is about personal choice. If you like C++ use C++ nobody is stopping you. But that doesn't mean all other languages are bad or are pathetic.

"Enlightening" was for realizing that debate can never end but realization can come that both languages are good in their own space. None is like superior than other at least in case of C and C++.

</comment></comment></comment></comment></comment><comment><USER37> Slightly off-topic but as a primary PHP developer, how can I get into C? Are there any free resources or good books to get started?

<comment><USER6> K&R, and Harbison & Steele were my two favorites.

HN says that Learn C The Hard Way by Zed Shaw is good.

[http://www.hnsearch.com/search#request/all&q=%22learn+c%...](http://www.hnsearch.com/search#request/all&q=%22learn+c%22&start=0)

<http://news.ycombinator.com/item?id=1027549>

As with any new language, once you're comfortable with a small core of the language, start working on your own problems. Start with little made up problems, and move on to useful tools as soon as possible. You don't have to be a master to write your own tools, and you won't become a master until after you've written your own tools.</comment></comment>


George Carlin Customization: 47 words you can't use on custom NIKE sneakers - <AUTHOR> http://replicatorinc.com/blog/2008/10/george-carlin-customization-47-words-you-cant-use-on-custom-nike-sneakers/

<comment><USER2> >The fact that Prostitutes are banned but Hookers are not seems odd.

A hooker is a rugby position. The hooker is in the middle of a bunch of dudes (said bunch is called the "scrum") and has to bend over forwards and push the other dudes to "hook" the ball with his feet and kick it back so his teammates can get it.

I don't get why this sport is considered so masculine.

<http://en.wikipedia.org/wiki/Scrum_>(rugby)#Rugby_league

<comment><AUTHOR> Great information. Localization is another key aspect to any of these configuration filters. I still think it is odd given that "kick" is banned, but would be a funny shoe in anycase.</comment></comment>


Show HN: Serverless meets Microservices - <AUTHOR> https://blog.leveros.com/introducing-lever-os-d10a857f210e <comment><USER2> > The serverless concept solves this problem, because it requires no DevOps to > build and deploy applications at scale

This is wonderfully naive. A great goal, but hopelessly unrealistic. E.g. currently it is not handling data persistence at all, so for starters it's targeting "the easy bit", yet there's hardly any mention of things like logging, or what do to when their Consul cluster decides to start complaining because membership has gotten messed up (ever had a Consul node rejecting most messages as "suspect"? ever had the same node get registered twice? all kinds of fun stuff), how to analyse performance issues, networking problems etc.

It looks like an interesting platform, but anyone thinking this gets them out of understanding ops concerns will have tough times ahead..

<comment><USER3> > anyone thinking this gets them out of understanding ops

I haven't looked at it specifically, but given how much the blurb focuses on 'you don't need ops, developers can do this, its all automatic and built-in' (thankfully they don't use the term 'magic') makes me think that when said devs inevitably _do_ need ops help to make it work, the required work for said ops will be increased because they can't just say "well the problem is your load balancer is doing X instead of Y because of config Z" \- its going to be a shit fight of fighting against the 'automaticness'.

Maybe they want to be the new cPanel (the web hosting product, not the generic nickname for a control panel).

<comment><USER2> Hey, I look forward to the day I can charge high rates going in to fix underlying problems for this stuff... So far, those of my clients doing cloud setups typically end up spending 2x-3x as much for my services to sort out their systems than those doing dedicated hosting, on top of usually spending more on hosting as well...

There are certainly exceptions that are using cloud technology for the things they are genuinely cost effective for (e.g extremely spiky traffic; bulk processing; or to manage their own dedicated hardware), but the amount of money that's blindly thrown out the window because the people authorising the expenses don't know how to estimate the costs of these things is staggering.

</comment></comment></comment><comment><USER4> Interesting bit from the FAQ:

"We rely heavily on Docker and Docker Swarm for containers, orchestration and networking. Other pieces of tech we use are Consul for service discovery and gRPC with Protobuf for the RPC."

Awesome that it's using gRPC under the hood. But, I'm still missing if there's an orchestration service running somewhere that takes care of the load balancing, or if it's distributed?

"When deploying Lever, you allocate a number of servers to it. Lever can then manage resources and auto-scale services running on it - but this is only limited to the servers you have allocated to it."

It would be awesome (and critical to our use case) if it could provision instances, even if it's via a shell command manually entered into a config file. From the stack description quoted above, it sounds like it would do okay if it was coupled with an autoscaling group that does this function for now...

Finally, I love the sticky resource routing, with the use case being data sharding.

Excited to try this out.

<comment><AUTHOR> Thanks man. To answer your question about load balancing, it is made via the 'leveroshost' agent itself. Each contains a HTTP/2 proxy that routes and loadbalances traffic as needed. Each RPC goes through 2 of these agents: one on the node originating from and one on the node going to. The decision of where to send the request next (load balanced / routed) is based on information from Consul.

</comment></comment><comment><USER5> Isn't a core tenant of DevOps that your developers are the ones doing the Ops too? I keep hearing things like "Hiring DevOps" or "According to the Stack Overflow survey there is 1 DevOps for every 30 developers.", and that feels like... an Ops role, right?

<comment><USER3> > Isn't a core tenant of DevOps that your developers are the ones doing the > Ops too?

Im sure it means that to a lot of developers, and definitely some managers.

The developers see it as "no more ops telling me that I need to use a TLS connection to the database because it's over a WAN", or "no more ops telling me I can't use the 0.0.0.1-pre-pre-alpha version of <insert runtime/framework/daemon> in production".

The managers particularly see it as "we don't need those pesky ops people, so we've just saved ourselves $X per year". They don't tend to factor in the lack of relevant skills by their remaining developers, which tends to result in less efficiency (i.e. taking longer to do shit) and greatly increased risk.

And then the developer says "hey we'll just use AWS because thats what HN all suggest and it's cheap" and you end up paying a heap of extra cash each month because they just run 10 on-demand EC2 instances 24x7 and a host of assorted services to deal with the lack of persistence on EC2 instances, when previously you needed just two servers in failover setup, with capacity to spare.

I've seen what happens when developers "do ops", as I was leaving a company. When you're asked by someone "can you help, I'm trying to install this SSL cert on a server (for a soon to be production system) but I don't really understand how any of this SSL stuff works", there is just one realistic response. Run. Then run some more, hide, change your email and don't answer your phone. Because that shit is about to go down like the titanic.

<comment><USER6> > And then the developer says "hey we'll just use AWS because thats what HN > all suggest and it's cheap"

Never understood this, except from developers who've never actually had to pay for anything out of their own pocket. AWS is nice, and has a place.

And I do hear it from people, a lot. It's cheap compared to buying your own hardware and dedicated staff, yes. But for a lot of the standard webapp stuff you might want to do starting out, it's not as cheap as just getting a dedicated VPS someplace.

I've been independent/self-employed for a long time, and while I use various AWS services (including EC2 for some projects), it's rarely ever cost which is the driving factor when AWS is chosen. But it's because the $ is coming, directly or indirectly, from me.

<comment> UK-AL Running your own stuff becomes more expensive when you want monitoring, Load Balancers, HA, VPN's into your corporate network and constant database backups. And then making it really robust.

Hiring all the staff for that can be expensive.

Problem is there are lot of developers who think setting up a virtual machine putting a db on it, and then a webserver on another without thinking about all the other stuff that can go wrong.

<comment><USER6> There's a balance to be had, and there's very likely different periods in a business lifecycle where some environments make more sense than others.

There's a pretty big cost to learning how to manage and get value all the AWS stuff, and in the early days of a project - especially true in the 'startup' world - there are probably more areas where $ can be spent to create more value.

I've seen far too many people spin up multiple AWS and tie themselves to expensive AWS setups when a small linode or other VPS (managed or otherwise) would have been more than adequate for the first year.

There's this weird view people that have it's either 100% AWS or hire full time developers and buy a bunch of bare metal. There's a lot of middle ground which can provide a good amount of value while giving you time to ramp up.

The fact that you're referencing tying VPNs to a corporate network means you're already far more advanced than a lot of the smaller orgs I've run in to tying themselves to AWS when far less expensive alternatives exist.

Again, saying this as someone who uses and likes Amazon stuff, just not exclusively.

<comment> UK-AL It can still be an issue. It would still be a disaster if in the first year, the database got corrupt or hacked?

Lone developers might tempted just to setup database without setting up a backup solution and HA. Amazon has that at click of a button.

For a developer/infrastructure guy probably 1/2/3 days if you know what your doing. If you don't know what your doing for your specific brand of database, you might not set it up right which is a big risk which only shows up once it's failed. There's a reason DBA's can get paid a lot, because there's a lot to know.

I think as a startup, you need to take all the shortcuts you can grab. Getting it out, and time to market is very important. Focusing on price at first can cost more than its worth.

It depends on if you want to pay more for having quick setup and having amazons engineers looking after backups and HA or do you want to pay less, spend more time doing it yourself and getting the skills to make sure its setup correctly.

</comment></comment></comment></comment></comment></comment><comment><USER7> This is really great initiative! Despite some fundamental critics and misconceptions, I'd like to say: Congrats, Vlad Alexandru!

In my humble opinion, this is not even close to "serverless", but rather "cross-platforms". The best description to current "serverless trend" that I've heard is that "infrastructure comes with no-ops and pre-scaled at massive scale, that only providers like Amazon's AWS, or Google's GCP, or Microsoft's Azure and alike can provide" ;)

</comment><comment><USER3> So... this is backend infrastructure (i.e. it runs on a server) to let your team deploy "severless" apps...

So they're serverless. Except the server you're running it on. And the lamba/style code they wrote and uploaded to it.

But serverless, because no ops staff required. Except the ones who installed and maintain this.

This is like a snake eating its own tail and wondering what hurts.

Edit: despite my sarcasm, it's _always_ good to see open-source solutions to reduce reliance (or risk of reliance) on closed vendor solutions. Just stop calling it serverless, and I'll stop telling you how fucking ridiculous that name is.

<comment><USER8> Seriously. We got serverless being the most BS term I've heard in a while. Then DevOps: a term I still don't understand as I've never seen a concrete description of it, its advantages, and specific examples. We have microservices that people either brag or warn about in HN articles.

Combine them to get... something! Um, something I'll avoid for now until the Cloud of confusion clears up.

<comment><AUTHOR> Hey, at least I didn't use "cloud-native" or "12-factor app"! On a serious note, though, yeah I can't say I'm keen on the terms. I've known DevOps since it was called SRE 10 years ago, at Google. Just trying to use same terms other people on HN seem to use.

<comment><USER8> Haha, I hear you. Yeah, cloud-native would've been worse I agree. What's SRE mean? Site Reliability Engineering? Or is my guess way off?

Btw, I really enjoyed reading 12-factor app [1] compared to most since the page was a clear description of obviously good practices and debatable recommendations that were at least clear. It was also about apps with a list of 12 things to consider. That fits the name. Page was over 70% specific justifications and technical answers with almost no hype or zealotry. I was impressed the cloud crowd was capable of that. Mainstream needs to do terms and explanations that way more often. ;)

[1] [http://12factor.net/](http://12factor.net/)

</comment></comment></comment></comment><comment><USER9> Is this a community project or built by a startup? I didn't find the information.

<comment><USER10> From the LinkedIn we can find out the author has established the company called "Lever OS" [1], so it looks like a startup product.

[1]: [https://www.linkedin.com/vsearch/p?company=Lever+OS&trk=prof...](https://www.linkedin.com/vsearch/p?company=Lever+OS&trk=prof- exp-company-name)

</comment></comment><comment><USER11> I was developing something similar with effe[1] e effe-tool[2], the idea is similar.

You wrote your service in go following in such a way that it expose 3 function and it get compiled down to a single binary, then you can dockerize your application (images usually are smaller than 6MB) and deploy it, wherever and whenever you want.

Of course everything is open source.

I explained it a little better here: [http://redbeardlab.tech/2016/03/05/effe.html](http://redbeardlab.tech/2016/03/05/effe.html)

[1]: [https://github.com/siscia/effe](https://github.com/siscia/effe)

[2]: [https://github.com/siscia/effe-tool](https://github.com/siscia/effe- tool)

</comment><comment><USER12> Your documentation says you support Node and Go. Do you have plans to support any other technologies?

<comment><AUTHOR> Absolutely, Python and Java are next. It's based on gRPC so adding new languages is relatively easy.

</comment></comment><comment><USER13> I don't know why HN is being so critical, because this sounds awesome and really useful! Similar to what I've been trying to do with databases ( [http://gun.js.org](http://gun.js.org) ).

It is sad to see so much elitism in the tech world that is dismissive of anyone/anybody that knows less than them. This same attitude seems to come out a lot to dismiss really cool tools like this ( [http://leveros.com](http://leveros.com) ) that help solve frustrations and problems. Could we try to be more encouraging of newcomers and of tools that automate (laziness is a programmer's virtue) those gaps?

</comment><comment><USER14> It looks like Serverless? [https://github.com/serverless/serverless](https://github.com/serverless/serverless)

<comment><USER15> LeverOS seems to be an open source implementation of a lambda service for running event-driven, "serverless" applications, aka an implementation of the idea that drives AWS Lambda, Google Cloud Functions, Azure Functions.

The Serverless Framework is one of several frameworks for writing serverless applications. The name of this framework is unfortunate as "serverless" is a generic term referring to event-driven applications, but has certainly benefited from the confusion that its authors have caused.

Those less familiar with these products can look at this as "RPC as a Service".

<comment><USER8> "term referring to event-driven applications" "Those less familiar with these products can look at this as "RPC as a Service"."

BOOM! You use words connected to real-world IT practice and suddenly I know what it does. They should try that. Appreciate it. :)

</comment></comment></comment><comment><USER16> A big part of the value of AWS Lambda is that it allows you to glue together other AWS services with custom application logic, similar to stored procedures in a database. Without the other AWS services and the event triggers they expose to Lambda, "serverless" is a lot less interesting.

</comment><comment><USER17> So I know something like this (or AWS Lambda) is good for quickly putting up an endpoint and scaling it to theoretically unlimited nodes.

Could anybody shed some light on how this might be used in practice? It seems at the point that you have multiple endpoints, you may as well just deploy a full application.

</comment><comment><USER18> This reminds me of Zappa [0], only Zappa actually runs on AWS Lambdas. Although they readily admit it takes a lot of hacks to get WSGI working within a Lambda function.

0: [https://github.com/Miserlou/Zappa](https://github.com/Miserlou/Zappa)

</comment><comment><USER19> I'm not sure I fully understand. Can you compare this to AWS Lambda?

</comment><comment><USER20> So how is this better than Lambda or Iron.io Push Queues?</comment>


LuaJIT2-beta1 has been released - <AUTHOR> http://lua-users.org/lists/lua-l/2009-10/msg01098.html

<comment><USER2> Just like LuaJIT 1, this is amazing for a one-person project developed more or less in stealth mode. At least for some narrow benchmarks, he's nearing or matching the Hotspot JVM and GCC 4 with a dynamic, JavaScript-like language. This will do for Lua what Google hopes V8 will do for JavaScript.

<comment><USER3> I have wondered for a while what the world would be like if JavaScript were to be replaced with Lua in the browser.

<comment><USER4> Indeed. Lua seems like a twin to JavaScript that was separated at birth, and actually had a chance to mature before being released. I'm really surprised it isn't used more widely (outside of the game industry).</comment></comment></comment>


Ask HN: What do you look for in a company (as a programmer)? - <AUTHOR>

I'm starting to look for new job opportunities after having a bad experience at my current employer.
One thing dawned on me: that I think it's better if I have a highly technical manager (as opposed to a non-technical manager).  As a programmer, I just have a hard time respecting non-technical managers at work.
Any other insights others have gained over the years? <comment><USER2> If I was interviewing now here are things I'd be on the lookout for:

Team dynamics: How do they interview (individually or as a team), do they undermine each other during the process, do they not play well together, is there obvious clique behavior, is it a fraternity, have they all worked together for awhile, is it a new team, what's the team lead like, has the team lead/mgr done the role before etc. Does the lead/mgr seem to respect his team, does he defer to them during the process at times or always take the lead?

Software: Are they chasing the latest trends, behind the times, or a mix of using new tech but keeping things stable. Look for their thought processes, questions they ask are generally tailored more then they even realize to their environment. Are they more worried about getting a smart person that can figure things out or trying to find the guy who has esoteric answers to questions.

Company: Does anyone outside the tech team interview you. For SMB's and/or startups, do they discuss the financial condition of the company? Do they avoid answering any questions you ask about the company from a financial aspect or team aspect etc. Is their culture open or closed? What are the working conditions like. When you tour is everyone heads down and no one is talking etc? Do you see any team members having some fun, laughing etc.

These are just ways I like to start evaluating companies. I don't really interview anymore as I run my own firm, but when we are engaging from a consulting perspective these are similar things that I do to gauge who the company is and who the team is we would have to work with. It tells me if we will have trouble with the team, if we should even take the job etc.

No matter what, good luck.

</comment><comment><USER3> Everybody has different needs and expectations. Some of those even evolve or 180 over the course of a single career.

Speaking to your own concern, the tradeoff is that many technical managers are only there because they fell upward. They may understand your job responsibilities well based on their own experience, but they may not be good at advocating for their team or understanding how team members might have different needs and productivity then they themselves delivered. They also might loathe and stress excessively over their own job, which is no good for anybody. You can have a great manager that happens to be highly technical, but you may often find that you have a highly technical manager who's an awful manager. So as you learn what they are, keep an open mind to the skills that are applicable to management itself --being a manager isn't the same as being a technical lead.

</comment><comment><USER4> Here is my list, compiled after a lot of soul searching in my last job hunt. I recommend spending some time determining the kinds of things that are really important to you, and prioritizing them.

\- Compensation: pay, bonus, benefits, PTO, perks

\- Commute and/or openness to remote work

\- Software development methodology, tooling, PM, environment (e.g. Joel Test)

\- Role clarity for target position, and time likely to spend coding

\- Company and team culture, team size, team consists of people smarter than me

\- Company's organizational stability and steady growth (neither stagnant nor extreme)

\- Institutionalized personal development/training, growth and advancement options

\- Company's focus on tech, company's long term plans/prospects

\- Future: will this position help me in my next job search?

<comment><AUTHOR> Good idea!

</comment></comment><comment><USER5> Joel Spolsky's twelve things have become known as the *Joel Test". [http://www.joelonsoftware.com/articles/fog0000000043.html](http://www.joelonsoftware.com/articles/fog0000000043.html)</comment>


Promise chaining explained - <AUTHOR> http://www.syntaxsuccess.com/viewarticle/angular-promise-chaining-explained <comment><USER2> ...in Angular

<comment><USER3> Angular 1 as well... With no angular specific code either... It is an old article though.</comment></comment>


Ask HN: Review my Site - <AUTHOR>

An online friend and I have created a website, Uberessay.com.
We want to compile a database of excellent essays written by and for students for reference and inspiration. Each essay is copyrighted and put in a password-protected PDF, set only for viewing. Uberessay does not in any way condone cheating. We want to encourage academic honesty and integrity in students, from high school freshman to graduate students and anything in between.
Would anyone like to tell me what they think of this idea? <comment><USER2> I applaud you for taking on such a great cause. I have written quite a bit about academic integrity issues, and I believe more people need to be thinking about it for something to be done.

With that being said, you're assuming people are coming to the site to cheat as you say several times "This site is not for cheating." You should probably assume people come for good purposes so as not to turn them off. Your job is to provide the technology, not criticize worst case human condition scenarios.

I won't comment specifically about the design because I don't have an eye for such things. However, the name and the font ("uber") sort of confused me.

Otherwise, it seems like a cool concept. How are you differentiating yourself from Scribd?

<comment><AUTHOR> I would like to think that we're different from Scribd by not having any monetary gain. I truly believe that open source projects and voluntary work can change so much. I really hate advertising such as Google Ads, which are there solely for making money. I want to create this because writing and education is my passion, not because I want to make a profit.

We also don't have a desire to because yet another social network.

<comment><USER2> So how are you planning to keep the site afloat? If this is something you really believe in and want people to use, you're going to have to come up with a plan to pay for the costs.

</comment></comment></comment><comment><USER3> Overall, I like the design of the site. First thing I noticed was the "what is uberessay" block of text on the left column. I think the way you've written the text is a great attention getter.

The biggest issue I have with the usability of the site is navigation and scoping problems.

Front page:

I like the essay gallery but there is no title associated with it. Are these the most recently added? Today's featured? As it stands now, I did not even realize they were essays, until I clicked on one. Could have been a picture, or user profile? who knows?

Navigation:

There is no way clear signifier as to what page you are on. You have nice little triangles on hover, but not on "selected".

The top black navigation bar is fine: Top level pages. But the second red navigation is a bit unintuitive. I assumed these links were sub-links of the top black navigation sections, but they are not. The red bar seems to contain article navigation.

So Black = Main Site Navigation, Red = Article Navigation.

I guess the placement as they are now is OK, but still seems like the red bar is a sub-set of the black bar. Perhaps adding Description titles to the red bar would help "Browse Articles ->"

Scope:

Similar to the article browsing bar, I think your website has some scoping problems.

For example the right tabbed column listing about, recent esssay, recent comments, etc is part of the article browsing functionality, which is also the red nav bar's job. The right column is also global. Something that confuses me. When I am navigating to a specific article, I see that it shows up under the red nav bar. There is a CLEAR division between what is the top header part of the site, and what is the article space. But then ... within the articles flesh colored space, there's the global article browser tabs. I assume that these tabs should be article specific. In other words I expect the scope of everything on an article page to be relative to that page. Or at least that category.

I think users need to have an implicit sense of "where I am at" within your website. Ideally when I'm browsing articles, everything should be related to my article browsing task. Then clicking on an article should refine the scope; still browsing articles, but now a subset of articles, i.e the category that the article belongs to, its publisher, etc. "Other articles by this author". "other articles from this category"

You are fine with leaving the main stuff where it is, but just be clear on the scope then. Add headers to things. Also the "about us" tab does not belong on that right column, imo.

Scope!

The layout does indeed _look_ organized though. Good job on the design. It's more a matter of being functionally organized.

As for content, I'll browse around a bit and maybe add a new comment.

Best of luck!

</comment><comment><USER4> The site seems interesting, and from the brief glance I got I think that the design is clean and works well. But I noticed that the font for most of the subsections is really small and basically illegible. For example, the text for <http://uberessay.com/about/about-uberessay/> is a whole lot smaller than the About Us text above the search bar. It seems like you have a good selection of articles though for being up such a short period.

<comment><USER5> Yes, agreed. I've got very good eyes, but the text on the sub-pages (like the about one) was too tiny for me to read. Screenshot in Firefox 3.5: <http://i27.tinypic.com/ws7eip.png>

Edit: they've fixed the text size now (see below) -- good work.

Also, on the about->reading page, you say, "All essays accepted and posted on this website are protected by a Creative Commons Attribution Non-Commercial No Derivatives License. This means that they are not yours to copy."

But isn't the whole point of CC that you _are_ free to "copy, distribute, and transmit the work" as long as you attribute (and don't use it for business or alter it, in this case). See: <http://creativecommons.org/licenses/by-nc- nd/3.0/>

The home page/logo/etc looks really nice, but the other thing was that it took me (a computer-savvy user) ages to figure out where to actually read an essay. This is partly because the text was too small and I physically couldn't read the download link. The PDF image should definitely be clickable and link to the PDF. And perhaps even better: a big "Click here to Read PDF" at the top of each essay page.

<comment><AUTHOR> I apologize for the small text; while trying to change the slider at the top I accidentally changed the wrong class in the CSS. It should be back up now. I apologize for the inconvenience!

</comment></comment></comment><comment><USER6> The site looks great and I think it's a great idea.

Here's one small visual bug you can fix: you suffer from the Safari PNG gamma problem (<http://hsivonen.iki.fi/png-gamma/>). In short, a PNG of a certain RGB color will not match up with that same RGB CSS color in Safari. The easiest solution is to use a 1px by 1px image for your background instead of specifying it as a color in CSS.

Good luck!

<comment><USER7> easiest thing is to use tweakpng (open source windows softwarer) to delete the srgb and/or gamma chunks of your png. it runs great under wine, but I don't know about good solutions under mac.

</comment></comment><comment><USER8> I like it but I have some concerns for you.

How will you monetize? Freemium?

How will you scale? It looks like you two are personally reading essays to approve/disapprove them but how will you scale if you're receiving 100 essays a day? To reach real scalability, I think you will need to crowd source the approval process with a karma system.

<comment><AUTHOR> As I've commented above, I truly believe that open source projects and voluntary work can change so much. I want to create this because writing and education is my passion, not because I want to make a profit. I don't particularly like sites such as DeviantArt, which bombards you with ads and limited features with a free account. And the premium account is out of my poor college student's price range. Perhaps at some point we will need to do this, but at the moment, we're hoping for some more people to submit essays.

We aren't sure how to scale yet, though we've come up with quite a few solutions, such as adding more people to our "staff". We want the absolute best, and sometimes community opinion is not always top notch.

</comment></comment><comment><USER3> Ah I see you have a direct question. I'll answer that as well.

I think the idea is fine. My friend is obsessively into philosophy and dreamed up relatively the same idea: An open place to publish and share written essays.

Seems great for anyone interested, only one thing: theres no money in it.

Another very very loosely similar website is heelpress.com Check it out, you'll see that they offer an open place to publish creative works. I have no idea how they make money but one differnce is that their market is intentially bigger than yours. So if they make any significant money at all, its in large part due to the bigger market.

You're market is tiny and they surely won't be paying customers.

Yes I understand you may not want nor care to get rich off this website, but making money is about sustainability. You can't possibly do all the work yourself, indefinitely. You need money.

</comment><comment><USER9> Great site, well designed, neat. Concept is good. But I wonder how you can/should sustain the avg readers/writer's interest to come back to your site again and again. I love Scribd's ePaper viewer, and I believe you can add that to your site as well. Providing a pdf download should be optional and should be upto the creator to let people download. Scribd viewer lets people stay on the site, and then you can throw related essays, related categories, etc outside the reading pane! Build a community around the writings. If I were a writer, and am willing to publish my writing free on your platform, (at least) I would like to create a following around my writing. Letting people download the PDFs doesn't solve much purpose.

</comment><comment><USER10> Load was very slow with lots of requests from some cafe on haight. Other sites load fine here. Design is OK but elements that I actually interact with should attract my attention more, rather than the background. Navigation in the site is slow. Categorization of essays is limited and needs work. Blurbs about anti-cheating and copyright seem silly, that seems obviously the purpose of the site and regardless of intent will be the primary use, hopefully not in the exact words. Overall, it feels unpolished but with a lot of potential.

</comment><comment><USER11> I like the concept of the site. Two issues though:

1) I read a couple of the featured essays and they were both pretty bad.

2) I don't think the emphasis on cheating is necessary. It just comes off as weird to be honest. Better to focus on finding really high quality stuff.

<comment><AUTHOR> Which were really bad, if you don't mind me asking?

<comment><USER11> "The Displaced and the American" and "The Dwellers Behind, On, and Beyond the Threshold"

Even just looking at the synopsis of the first:

"This essay presents a brief consolidation of the argument of my class Race and the New Republic – that the American culture, notably of the antebellum period, rests on the trauma of displacement and that Americans have coped with it in a divisive, self-destructive way. My essay explores the use of this concept in Huckleberry Finn and Moby Dick, classic American novels that attempt to symbolically depict, if not reconcile, this division of the American social landscape."

This is barely even coherent.

<comment><USER12> I think that is a little harsh. It is coherent -- not particularly well written, but coherent.

(It is clear that the author has internalized the currently fashionable pomo academic style and is trying to reproduce it. This is, sadly, the only writing skill taught at many colleges. You won't learn to avoid self-reference in an essay, write engaging introductions, and edit sentences for clarity in a class titled Race and the New Republic. Sadly for the student, that is probably a fairly typical class in their English department.)

<comment><USER11> >I think that is a little harsh. It is coherent -- not particularly well written, but coherent.

When you strip out all the fluff, this is what you're left with:

"American culture rests on the trauma of displacement and Americans have coped with it in a divisive, self-destructive way."

This is sloppy thinking, plain and simple. America may have a divisive culture as a result of the 'trauma of displacement' its founders experienced.

However, American culture certainly does not "rest on a trauma of displacement," whatever that means.

What's worse, if you actually read the full essay, it doesn't even support this claim at all.

Anyway, to be as direct as possible to the original submitter, based on the essays you've chosen as featured writing I think it's going to be really hard for you to be successful at this project. The graphic design of the site is great, but making the actual project work is going to require a certain aesthetic taste in writing that I just don't see here.</comment></comment></comment></comment></comment>


On being startled by a programming language - <AUTHOR> http://bbot.org/blog/archives/2011/03/17/on_being_surprised_by_a_programming_language/

<comment><USER2> J is awesome. GPL'd J is even better!

Some of us are trying to organize our efforts here: <https://github.com/openj/core>

We don't intend on mucking with the code much at this point, just patching together a better build system, etc.

<comment><USER3> I think I'm more amazed at the C code. Is that obfuscated or a decompiled dump? Or is that how the core of J is really written?

<comment><USER2> Hah! That is how the code is really written. It's... a unique style, shared amongst the APL languages.

I'm pretty sure there are about two people that can read and write that fluently: Roger Hui and Arthur Whitney.

<comment><USER4> As a wholly unaffiliated, self-selected, and entirely unofficial spokesperson, I'm happy to bestow this lifetime achievement award on behalf of the IOCCC.

<comment><USER5> People who like APL do not often code with readability as their number 1 priority. In fact, to code in APL one must have an outright disdain for the idea that someone else could easily understand their code.

<comment><USER6> No, we just have a different idea of what's readable. APL was _created_ to have a mathematical notation that made problem solving easier. Don't believe me? See Iverson's Turing Award lecture,"Notation as a Tool of Thought" (<http://www.jsoftware.com/papers/tot.htm>).

"I did pure mathematics in school, but later I was a teaching assistant for a graduate course in computer algorithms. I could see that the professor was getting killed by the notation. He was trying to express the idea of different kinds of matrix inner products, saying if you have a directed graph and you're looking at connections, then you write this triple nested loop in Fortran or Algol. It took him an hour to express it. What he really wanted to show was that for a connected graph it was an or-dot-and. If it's a graph of pipe capacities, then maybe it's a plus-dot-min. If he'd had APL or K as a notation, he could have covered that in a few seconds or maybe a minute, but because of the notation he couldn't do it." - "A Conversation with Arthur Whitney" (<http://queue.acm.org/detail.cfm?id=1531242>)

</comment></comment></comment></comment></comment></comment><comment><USER7> I would like to coin a phrase: "seduced by syntax".

I think humans LOVE syntax; and syntax is often loveable, crystallizing a new viewpoint into a linguist pattern that allows this viewpoint to be diffused by our amazing hardwired capabilities for language. J does that.

That being said, sometimes being seduced, while REALLY FUN for a little while, turns out to REALLY MESSED UP in the long run. I think J and APL are like that too -- just break up with him, really....

For another metaphorical take: I think Python and C are like English -- boring, with a lot of fun syntax stripped out, but very, very useful. C++ is like Mandarin -- completely complicated, but so much literature and history is written in it that you have to take it seriously. Shell is like the pidgin languages. And J/APL ... they are like Quileute (the language spoken by Jacob- the-Werewolf's tribe): completely difficult, arcane, counter intuitive, and only spoken by like six other weirdos (ie don't bother).

All these languages are seductive, though.

J programmers love to exchange emails like "I found a way to calculate pi to the 80th decimal with only 4 characters" ... as if that is remotely useful. We have J code in use in our office -- its fun, if you like speaking Klingon, but it is a complete waste of time and sweat for any pragmatic applications. If you want to do complex weird matrix stuff in a few lines, learn linear algebra and tensor operations for chrissake, which actually have some utility in the real world. And don't be fooled by APL/J types telling you their language is mathematical -- it isn't, in the sense that you can't actually derive new results with it; it is just difficult (good math makes thing _easier_ ).

Sorry for the rant. I wish the damn language would disappear, and we could remember it wistfully like SNOBOL, Ada, SAS, and other bad experiments in seductive syntax.

<comment><USER8> Syntax to me is superficial. What APL/J/K are doing is much deeper: programs are short sequences of composable operators.

<comment><USER9> I get your point, but syntax ceases to be superficial if it prevents you from expressing what you want to say cleanly. As a daytime Java programmer, discovering the freedom _from_ syntax that Lisps allow you has been revelatory.

<comment><USER8> I quite agree. It was revelatory for me in the same way.

</comment></comment></comment></comment><comment><USER10> I'm trying to figure out what is so startling about this, actually. The { function just seems to return the element at the given index, or if you pass in a collection of indices, maps that operation onto the collection. That is convenient operator overloading but not mind-blowing.

<comment><USER2> True, that is what's happening. The cool thing is that dimensional (in J terms, it's 'rank') overloading is inherent to the language.

Most operators have implicit dimensional looping or respond different to differently ranked inputs.

Take for example _integers (i.)_ :

           i.3
        0 1 2
           i.3 3
        0 1 2
        3 4 5
        6 7 8

(That's kind of a dumb example, but I think it at least hints at the expressive power of rank.)

</comment></comment><comment><USER11> Other than using an operator for a function name, there's no real rocket surgery in this post:

      >>> def index(x, y):
            'Dyadic function indexes y by x'
            return [y[i] for i in x]

      >>> p = list(range(22))
      >>> shuffle(p)
      >>> p
      [1, 20, 19, 15, 9, 14, 6, 8, 2, 4, 16, 18, 10, 3, 0, 13, 12, 11, 7, 17, 5, 21]
      >>> index(p, p)
      [20, 5, 17, 13, 4, 0, 6, 2, 19, 9, 12, 7, 16, 15, 1, 3, 10, 18, 8, 11, 14, 21]
      >>> index([1]*22, p)
      [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20]
      >>> index(p, [1]*22)
      [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

</comment><comment><USER12> Yesterday I was testing something in ruby. Basically the return value was a constant * rand. Yeah, 0.6360787621690106 and 0.6360787023690106 were the two results. I was like what's going on? until I noticed the middle of the answer was different. Felt like nearly winning the lottery.

<comment><USER13> I'd FUUUUUU on that.

</comment></comment><comment><USER14> I remember APL from my college years. APL is _the archetypal write-only programming language_.

Even with 20-to-1 comment-to-code ratio, it was easy to get confused with code written the previous morning. By you.

From what I see, the most important development is using plain ASCII. Too bad it's still unpronounceable. Dictating APL code to another student was endless fun. We even invented our own names for some of the symbols...

Having said that, APL was exquisitely powerful and concise. Yet, I have to wonder if there is space for an exquisitely concise _write-only_ computer language today.

</comment><comment><USER15> Haha, I remember feeling the same way about K many years ago.

</comment><comment><USER16> I've been taken aback by some of the concepts of Haskell recently as well. Hooray for obscure but insanely powerful languages!

</comment><comment><USER17> Intentional pun in the blog? "This shit is crazy! Let me show you a log."

<comment><AUTHOR> :>

</comment></comment><comment><USER18> OMG! Zoinks!</comment>