Apache Jena - <AUTHOR> http://jena.apache.org <comment><USER2> A lot of "blast from the past" comments! But as a counter example, we still use Jena extensively (in combination with its server Fuseki) to deal with biomedical ontologies and taxonomies for use in Natural Language Processing (e.g. Human Phenotype Ontology, Gene Ontology, etc). We even recently made the step to add some PROLOG-ish inference rules [1]. I have nothing but love for the RDF ecosystem, in the sense that I love their ideas even if some of the implementations are a bit wonky. For example, the performance of property paths (i.e. the + and * operators in sparql) leave things to be desired sometimes. Not to mention the funny looks from some devs when you say you use RDF, but I take that as a badge of honor! It took me a while to get it, so I finally decided to write down what it all means a couple of years ago [2].

[1]: [https://jena.apache.org/documentation/inference/index.html](https://jena.apache.org/documentation/inference/index.html)

[2]: [https://joelkuiper.eu/semantic-web](https://joelkuiper.eu/semantic-web)

</comment><comment><USER3> A blast from the past. Semantik Web used be a good buzzword to receive EU research grants, and RDF tripel have been useful in some areas. What else remains?

<comment><USER4> I chuckled on the EU research grants part. My God, when I remember the monstrosities I was thinking up just to bodge in Semantic Web/Linked Data. Those guys are purely fueled by buzzwords. Maybe we met somewhere :) .

"Semantic data is the future and always will be" \- unknown author.

<comment><USER5> "Semantic data is the future and always will be" \- unknown author."

\- Pretty sure it was Peter Norvig

</comment></comment></comment><comment><USER6> I'm seeing several people asking what RDF is useful for. If you're curious, I use it for basketball analytics: [https://github.com/andrewstellman/pbprdf](https://github.com/andrewstellman/pbprdf)

Here's an article about my system, pbprdf: [https://www.zdnet.com/article/nba- analytics-and-rdf-graphs-g...](https://www.zdnet.com/article/nba-analytics- and-rdf-graphs-game-data-and-metadata-evolution-and-occams-razor/)

And an example of its use: [https://gist.github.com/andrewstellman/4872dbb9dc7593e56abdd...](https://gist.github.com/andrewstellman/4872dbb9dc7593e56abddbe8b998b509)

Here's an example of what the RDF files generated by pbprdf look like:

Here's the ontology, which defines the vocabulary it uses: [https://github.com/andrewstellman/pbprdf/blob/master/generat...](https://github.com/andrewstellman/pbprdf/blob/master/generated/ontology.ttl)

And this is what the data looks like:

      <pbprdf/games/2017-11-29_Warriors_at_Lakers/230> pbprdf:shotPoints "3"^^xsd:int ;
            pbprdf:shotAssistedBy <pbprdf/players/Klay_Thompson> ;
            pbprdf:shotType "26-foot three point jumper" ;
            pbprdf:shotMade "true"^^xsd:boolean ;
            a pbprdf:Shot ;
            pbprdf:shotBy <pbprdf/players/Stephen_Curry> ;
            a pbprdf:Play ;
            pbprdf:forTeam <pbprdf/teams/Warriors> ;
            pbprdf:inGame <pbprdf/games/2017-11-29_Warriors_at_Lakers> ;
            pbprdf:time "10:23" ;
            pbprdf:period "3"^^xsd:int ;
            a pbprdf:Event ;
            rdfs:label "Warriors: Stephen Curry makes 26-foot three point jumper (Klay Thompson assists)" ;
            pbprdf:secondsIntoGame "1537"^^xsd:int ;
            pbprdf:secondsLeftInPeriod "623"^^xsd:int .

<comment> simo-climb Hi Andrew

Thanks for posting your project in full. Too much of RDF/linked data is in the abstract, to big to see the moving parts, or behind propriety doors. I'm at the beginning of the learning curve so it's much appreciated and quite a number of things about the data workflow clicked in - nice to see a graph and instance create process in rd4j.

I'm wondering if you've come across an approach to push the outputs of quantitative sparql queries such as your shot points% to a visualization tool..but, I'm looking for a semantically aware approach.

So as to be informative to this forum.. what do I mean... I'm not talking about a basic flow of the output a flat file (e.g. csv) and digest by a generic tool - take the pick of zillions of libraies here, but Power BI is my current bug bear where Microsoft has sold the promise of self serve BI but leaves everyone else to manaage the chaos of cleaved, chewed and duplicated data and fragile and disconnected calculation(DAX measure) code base.

So what am I looking for ?

Let's call them "measures", but in the rdf construct they are sparql queries as you've documented so well. The measure operates on data that meets constraints of it's type and cardinality amongst other things, but which has, if required been automatically changed as to the conforiming "pattern" using constraint rules. I then build my client application with visuals e.g. a chart or map that displays the sparql query results. The visual changes based on properties or constraints on that data. More over the acutal measure is stored with the data and encapsualted in the client application. Plus it has full provenance also included. __I note here that general ontology and instance visualization tools abound, but not what you could call BI tools for charting etc.

I know these have been concevied and prototyped before. See: [https://composing-the-semantic- web.blogspot.com/search?q=cha...](https://composing-the-semantic- web.blogspot.com/search?q=chart)

I have been building my skills and work flow in a team that's adopting shacl and spin rules to drive data ignestion through to interfaces in the Topbraid tool set. The space is coming along but for this use case of charting and visualizing seems to have stalled, with the above UISPIN work now deprecated and waiting... maybe for shacl and some shacl javascript mappings to come to the rescue.

I've found some interesting new work using webcomponents (polymer/LitElement) that makes sense: [https://blog.resc.info/reboot-of-using-interface- encapsulati...](https://blog.resc.info/reboot-of-using-interface- encapsulation-to-listen-to-linked-data-predicates/) But it feels a long way away for me to tackle conceptually and skills wise with yet another code framework to get on top of.

Hoping you've seen some potential paths mate.

Cheers

Simon

</comment></comment><comment><USER7> I think Resource Description Framework (RDF) is overkill.

The underlying idea that is triple store (reminiscence of Entity-Attribute- Value model) is a good idea because it allows to model data with less overhead than a graph database will do over the same problem. Think of a list of items attached to a node or hypergraphs. All that is easier to do in a triple store.

Actually, I think that triple stores are not given enough buzz. Most of RDF buzz is around ontologies (aka. standard vocabulary for describing things). Datomic prooves that triple store is a great idea in itself.

Datomic is RDF in disguise. That is, it implements a versioned triple store and a language similar to SPARQL (based on core.logic (aka. clojure's minikanren))).

When you think about it, a versioned database is a gem when it comes to debugging. Versioning a database is next to the best idea of the decade and that would not have been possible with another model than the triple store model.

The idea of database versioning or more generally versioning of structured data, especially versioning ala git is making its way through academia (see [https://project-hobbit.eu/](https://project-hobbit.eu/)) and outside academia (cf. [https://qri.io/](https://qri.io/)) to help with the vast amount of data that is flowing.

<comment><USER8> > _When you think about it, a versioned database is a gem when it comes to > debugging. Versioning a database is next to the best idea of the decade and > that would not have been possible with another model than the triple store > model._

This is a pretty bold claim. Why isn't it possible with another model?

<comment><USER7> Well, you are correct. It is possible to implement historisation / audit trail in other database models. Sorry. Maybe I should blog about it :)

</comment></comment></comment><comment><USER9> I actually stumbled across this a couple weeks ago, while thinking about the design for a project. I'm working with threat intelligence/security data and I need a nice way for users to save/share that data with the team, as well as query it in a simple fashion. People are pushing for a graph database. So I did some research and learned about RDF, OWL, Jena, etc.

I'm still not sure if this is the right road to go down. Just from reading papers it's hard to tell how much of this is hype and over-engineering and how much is solid. Anyone have some RDF/OWL/Jens/SPARQL stories they want to share?

<comment><USER10> Unfortunately a lot of stuff going on in the RDF domain is behind firewalls so it's a bit hard to give a lot of details. But I can contribute some public and some private use-cases of where RDF is used:

Refinitiv (formerly Thomson Reuters Financial and Risk) knowledge graph is built completely on the RDF stack: [https://www.refinitiv.com/en/products/knowledge-graph- feed](https://www.refinitiv.com/en/products/knowledge-graph-feed)

When I talked to them in late 2017, they told me they have 100 billion triples in their database, plus more in a versioning back-end. Their triplestore is open source: [https://github.com/CM-Well/CM-Well](https://github.com/CM- Well/CM-Well)

Several government-agencies all over the world start to build public RDF knowledge graphs. I'm closely involved in the one from the Swiss government, see my presentation from last week [http://presentations.zazuko.com/Swiss-LOD- Platform/](http://presentations.zazuko.com/Swiss-LOD-Platform/)

There are similar projects in other countries like the Netherlands, Belgium, UK, etc. This stack makes a _lot_ of sense for open data, as you can do some pretty crazy queries without spending 2 days on preparing your data. See for example the Swiss Open Data Advent Calendar of 2018: [https://twitter.com/linkedktk/status/1076064066525949952](https://twitter.com/linkedktk/status/1076064066525949952)

As I said there are many "behind the firewall" use-cases where people use the stack exactly because of its features like OWL. Yes it comes at a price (bootstrapping is not really super easy) but this is stuff we will still run in 40 years from now. I see it in:

Finance: Fraud detection, compliance, customer 360° views, ... Stardog ([https://www.stardog.com/](https://www.stardog.com/)) lists Moody's, BNY Mellon and National Bank of Canada as customers, last week I've met someone from Credit Suisse which is Mr. RDF there. * Production: You have a ton of databases containing products you create but there is no way to figure out what a final product consists of as the data is scattered across at least 5 of them. The automotive supplier I talk about here is using RDF to get that view.

Life sciences: The largest RDF dataset available to the public is UniProt and related datasets. In total they provide a SPARQL endpoint (RDF database) with 50 billion (!!) triples available. This is a highly popular dataset and is used in pretty much every larger pharmaceutical enterprise as well. See [https://www.uniprot.org/](https://www.uniprot.org/) as a starting point. I know at least of one large life sciences company that just recently decided that RDF will be the base of all future data unification standards within the organization.

Insurance business: One of our customers is using RDF to unify a ton of different systems and get the 360° view as well about their customers.

RDF is an absolutely amazing stack and I do not see anything else available that gets remotely close to the power of it. The day I find something more powerful, I will be the first using it. But most of the time people dismissing RDF have zero clue about what it really can do.

<comment><USER11> I am part of a team building an RDF database to be used for environmental footprinting and industrial ecology ([https://github.com/BONSAMURAIS](https://github.com/BONSAMURAIS)), and am also slowly becoming part of the Swiss open data scene - I would appreciate a chance to chat with you about your experiences!

For us, RDF seems like the only technology that can easily adapt to the large number of data types that we envision collecting.

<comment><USER10> sure, more than happy to. You will find me at @linkedktk on twitter or adrian.gschwend @ zazuko . com

</comment></comment></comment></comment><comment><USER12> I have been a fan of RDF/RDFS/OWL for a long time. I started adding RDF in various forms to my main web site shortly after TBL, et al wrote the original Scientific American article. I have also written two semantic web/linked data books.

The uptake for the semantic web has been spotty. I was hired as a contractor at Google to work with the Knowledge Graph and over the years I have had a lot of consulting work in related areas.

That said, if I were building a custom Knowledge Graph for a company or organization today, I would likely use a graph database like Neo4J. Maybe not though - it would depend on the application.

<comment><USER13> Really? Why not Jena or Marmotta with Postgres backend? I have little experience but just started setting up the latter, therefore I'm curious.

<comment><USER14> I can't speak for OP, but in my humble opinion, they don't really serve the same purpose. Jena and Marmotta are implementation of standards, while Neo4J is more of a proprietary system, and the underlying paradigm is different between triple graphs (for Jena and in a lesser dimension Marmotta) and property graphs (for most graph databases, e.g Neo4J, Apache Tinkerpop, OrientDB...).

To make a very short summary, RDF is more concerned with the possibility to link data, so each piece of information is identified by a dereferencable URI, and can be described with an explicit model called an ontology (fancy word for a vocabulary used to describe data). On the other hand, Neo4J is more concerned with performance, but does not consider linking data accross the Web, or using an explicit schema. And for Marmotta, it is in kind of a bad place right now, the development seems a bit stalled, and the standard it implements is quite complicated compared to the majority of the problem it solves. This might evolve however, since Linked Data Platform (said standard) is now promoted by SOLID ([https://solid.inrupt.com/](https://solid.inrupt.com/)), a new initiative by Tim Berners Lee et al. to enable a truly distributed Web.

<comment><USER15> I don't see what you can't do with neo4j, neptune, datomic. Neptune offers a sparql interface. You could easily specify an explicit schema. If you wanted to make an ontology that's globally unique you could force it to be defined at a centrally defined application level. If you wanted a inferring traversal, for example applying some type of hierarchy, you could write your own iterator in java in neo4j if you wanted to, or just apply multiple types to the vertex.

</comment></comment></comment></comment><comment><USER16> What even is Semantic Web in modern terms?

<comment><USER15> Things like json-ld, microdata, rdfa [https://developers.google.com/search/docs/data- types/product](https://developers.google.com/search/docs/data-types/product)

Wikidata also has data in rdf [https://wikidata.org/wiki/Wikidata:Database_download#JSON_du...](https://wikidata.org/wiki/Wikidata:Database_download#JSON_dumps_\(recommended\))

I wonder what is the killer feature to be had. If you want highly connected data, you can use graph databases like neptune, neo4j, datomic. If you want logic programming, you still have swi-prolog, or something like picat, eclipse, mercury, which can easily model triples or custom ontology. There's also apache tinkerpop and similar which give querying a more object oriented feel. I see prolog can interop with Jena, but if it can, why not parse & query rdf/owl in prolog itself. Can't prolog do everything sparql can.

What is the value offering on apache Jena?

<comment><USER17> RDF, and in particular OWL2 (reformulation of RDF tech based on description logic) is about decidable fragments of first-order logic, whereas Prolog is an existential Horn fragment on terms with Turing-complete extra-logical additions such as negation-as-failure and "cut" hence has undecidable decision problems. I actually think the EU-granted research belittled in another comment did a good job of carving out fragments of FOL for relevant applications with desirable complexities of decision problems. But from a practical PoV, RDF, OWL, and SPARQL is bordering on unusable (starting from the fact that open world semantics alone isn't applicable in many real-world scenarios), though jena and rdflib are working fine. Think about OWL2/description logic as a variable-free representation of axioms with just two logical variables (plus some with three vars such as the axiom of transitivity).

Today there's a renewed interest in Prolog and Datalog, which makes me happy after RDF had captured the field for almost two decades.

</comment></comment></comment><comment><USER18> \- Are there any examples of using Apache Jena for reasoning/inference CMU's NELL/RTW [0] data?

\- Are there any tools for ontology inference like Apache Jena, but simpler and preferably built with js or python?

[0] [http://rtw.ml.cmu.edu/rtw/](http://rtw.ml.cmu.edu/rtw/)

</comment><comment><USER19> Big fan of Jena. The command line tools alone for running SPARQL queries and converting between formats is great. Can anyone compare and contrast Jena in a Java project and/or operation against flat files with Neo4J or other graph systems?

<comment><USER20> What do you think of [http://rdf4j.org](http://rdf4j.org) ?

<comment><USER21> Interesting. I'll have a look. Thanks for sharing :D

</comment></comment></comment><comment><USER22> [http://rya.incubator.apache.org/](http://rya.incubator.apache.org/)

How does it compare to rya?

<comment><USER23> Looks like rya is a triple store on top of accumulo. Jena has SDB (stores data in relational DB), TDB (single machine, single JVM, transaction-wise, on-disk store [with mmap, journal, cache, etc]).

Jena API is also extensible, and I remember someone was talking in the mailing list about an example with HBase I believe, as the backend for the triple store.

Both HBase and Accumulo can be scaled to multiple nodes. So you should have some pros and cons of using either (or rya), as well as pros and cons of using Jena.

Finally, I believe Jena is not simply a triple store. It has a web layer via Fuseki, services for managing graphs, command lines, and other tools useful for data processing with semantic web technologies.

</comment></comment><comment><USER10> My comment is a repost that I did in another RDF related thread. It is still valid so here we go:

I'm an engineer that used to do RDBs for a long time. One day a customer of a friend came with an issue that was in my opinion impossible to solve with relational DBs: He described data that is in flow all the time and there was no way we could come up with a schema that would fit his problem for more than one month after we finished it. Then I remembered that another friend once mentioned this graph model called RDF and its query language SPARQL and started digging into it. It's all W3C standards so it's very easy to read into it and there are competing implementations.

It was a wild ride. At the time I started there was little to no tooling, only few SPARQL implementations and SPARQL 1.1 was not released yet. It was PITA to use it but it still stuck with me: I finally had an agile data model that allowed me and our customers to grow with the problem. I was quite sceptical if that would ever scale but I still didn't stop using it.

Initially one can be overwhelmed by RDF: It is a very simple data model but at the same time it's a technology stack that allows you to do a lot of crazy stuff. You can describe semantics of the data in vocabularies and ontologies, which you should share and re-use, you can traverse the graph with its query language SPARQL and you have additional layers like reasoning that can figure out hidden gems in your data and make life easier when you consume or validate it. And most recently people started integrating machine learning toolkits into the stack so you can directly train models based on your RDF knowledge graph.

If you want to solve a small problem RDF might not be the most logical choice at first. But then you start thinking about it again and you figure out that this is probably not the end of it. Sure, maybe you would be faster by using the latest and greatest key/value DB and hack some stuff in fancy web frameworks. But then again there is a fair chance the customer wants you to add stuff in the future and you are quite certain that at one point it will blow up because the technology could not handle it anymore.

That will not happen with RDF. You will have to invest more time at first, you will talk about things like semantics of your customers data and you will spend quite some time figuring out how to create identifiers (URIs in RDF) that are still valid in years from now. You will have a look at existing vocabularies and just refine things that are really necessary for the particular use case. You will think about integrating data from relational systems, Excel files or JSON APIs by mapping them to RDF, which again is all defined in W3C standards. You will mock-up some data in a text editor written in your favourite serialization of RDF. Yes, there are many serializations available and you should most definitely throw away and book/text that starts with RDF/XML, use Turtle or JSON-LD instead, whatever fits you best.

After that you start automating everything, you write some glue-code that interprets the DSL you just built on top of RDF and appropriate vocabularies and you start to adjust everything to your customer's needs. Once you go live it will look and feel like any other solution you built before but unlike those, you can extend it easily and increase its complexity once you need it.

And at that point you realize that this is all worth is and you will most likely not touch any other technology stack anymore. At least that's what I did.

I could go on for a long time, in fact I teach this stack in companies and gov-organizations during several days and I can only scratch the surface of what you can do with it. It does scale, I'm convinced by that by now and the tooling is getting better and better.

If you are interested start having a look at the Creative Commons course/slides we started building. There is still lots of content that should be added but I had to start somewhere: [http://linked-data- training.zazuko.com/](http://linked-data-training.zazuko.com/)

Also have a look at Wikipedia for a list of SPARQL implementations: [https://en.wikipedia.org/wiki/Comparison_of_triplestores](https://en.wikipedia.org/wiki/Comparison_of_triplestores)

Would I use other graph databases? Definitely not. The great thing about RDF is that it's open, you can cross-reference data across silos/domains and profit from work others did. If I create another silo in a proprietary graph model, why would I bother?

Let me finish with a quote from Dan Brickly (Googles schema.org) and Libby Miller (BBC) in a recent book about RDF validation:

> People think RDF is a pain because it is complicated. The truth is even > worse. RDF is painfully simplistic, but it allows you to work with real- > world data and problems that are horribly complicated. While you can avoid > RDF, it is harder to avoid complicated data and complicated computer > problems.

Source: [http://book.validatingrdf.com/bookHtml005.html](http://book.validatingrdf.com/bookHtml005.html)

I could not have come up with a better conclusion.

</comment><comment><USER24> I think the semantic web never worked because of seo spam. The closest it got to adoption in any form was the keywords meta tag. We know how that ended up.

<comment><USER25> Less that and more the combination of bad tools, labyrinthine "standards" which were usually poorly implemented by said tools, and lack of concrete use- cases. Almost nobody had a case where implementing it showed a clear business value so most of the "you should do this" advocacy was along the lines of "this will become useful later" and that was a hard sell because it took many years before you could go to a webpage, read some decent instructions, mark something up, and run it through a validator or another client and get the expected data back out.

<comment><USER26> That is exactly what is happening: people and companies marking up their pages with JSON-LD and RDFa metadata because it impacts SEO: [https://developers.google.com/search/docs/guides/intro- struc...](https://developers.google.com/search/docs/guides/intro-structured- data)

<comment><USER25> That was my point: to the extent that the semantic web has happened at all, it's because someone can go to their boss and say "If we do this, here's a non-hypothetical benefit we'll see immediately" and because Google invested in high-quality documentation and tools which make it easy to do correctly.

</comment></comment></comment></comment><comment><USER27> I prefer rdf4j as Rdf-Api for clients and GraphDB from Ontotext as RDF store. I never liked programming with Jena.

</comment><comment><USER28> How is semantic web data being used today? Has there been any research to build a general AI using this?

</comment><comment><USER29> What is the origin of the name / What does it mean? Couldn't find an answer on the website.

<comment><USER30> Jena is a city in the eastern part of Germany. It is historically famous for its university and optics innovation, and as an epicenter for bauhaus architecture.

<comment><USER31> That is why people from AKSW Leipzig built a similar thing for PHP named Erfurt ([https://github.com/AKSW/Erfurt](https://github.com/AKSW/Erfurt)) for their semantic wiki OntoWiki ([https://github.com/AKSW/OntoWiki](https://github.com/AKSW/OntoWiki)).

</comment></comment></comment><comment><USER32> why Java?

<comment><USER21> Easier to build something quicky but definitely not the best option for DBs. It's always about tradeoffs I guess.

<comment><USER32> for quickly, I would have chosen a dynamic language (python, php)</comment></comment></comment>


Ask HN: Reasonably Priced Alternatives to Apple Pro Display XDR? - <AUTHOR> I know Apple are comparing the display to studio displays ...etc but is there a "PC" display that comes close for a more reasonable price? <comment><USER2> Depends on your definition of PC display.

Apple Pro XDR is a really high end device.

Eizo, NEC and Dell UltraSharp are the usual suspects for high quality displays, including some exotic offerings like 1:1 aspect ratios, panels for radiology, air traffic control, etc.

For programming, I totally miss 16:10 2K displays (2560x1600), which allow splitting the screen in two windows that are ample enough for long text lines and have an aspect ratio that is close to an A4 paper (sqrt(2)).

Sadly, 16:10 are getting discontinued. I totally hate 16:9. Not even LG for Apple are 16:10, despite the ridiculous price.

But Apple Pro XDR is obviously not a display for programmers, so none of my comment is really a comparison to it.

</comment><comment><USER3> Benq has wide gamut displays.

Eizohas this [https://www.bhphotovideo.com/c/product/1425544-REG/eizo_cg31...](https://www.bhphotovideo.com/c/product/1425544-REG/eizo_cg319x_4k_bk_31_1_dci_4k_wide_screen.html)

</comment><comment><USER4> When could a used Apple Pro Display realistically drop to $3k or less? 12-18 months after first shipments?...

</comment><comment><USER5> no. It is actually a good value for the specs.

<comment><AUTHOR> Fair enough.</comment></comment>


Ask YC: Finding start ups? - <AUTHOR>

I've heard "the best way to learn about start-ups is to work in one" - it strikes me as great advice. I learned a lot more about selling working as a salesman than I would have if I just spent time reading websites about it. Thats where I am stuck now, I've spent a lot of time reading about start-ups, a lot of time hacking, but I'm not quite ready to start my own company. (I have 2 years left of college, and I definitely want to finish), so I'm looking to intern somewhere this summer.
Unfortunately I can't find any start-ups around here (NYC, northern new jersey). I know there have to be some in NYC and I would gladly commute but it seems nearly impossible to find them. I assume its because people in a start up are too busy actually doing work to bother posting ads for interns. I watch here and search google and craiglist but the results are not promising. How do you find your way into the loop? I feel like it is a game of who you know, not what you know, and at the moment I don't know anyone.
Thanks, Kevin email@example.com <comment><USER2> There are tons of startups in NYC. Try going to NextNY ( <http://www.nextny.org/wiki/> ) or the New Tech Meetup ( <http://newtech.meetup.com/1/> ). You'll meet people in the community fast. You can start by going to Matchup Camp tomorrow night: <http://www.nextny.org/wiki/show/MatchupCamp>

</comment><comment><USER3> Even if they're not posting ads for interns doesn't mean they won't take one. I was in the exact same position last summer, so I emailed this one startup asking if I could intern there. It was a completely out of the blue request, but the fact that I took the initiative to write to them and showed an interest in their product/company obviously struck a chord because they offered me a paid position.

As the saying goes, it never hurts to ask.

Good luck.

Edit: I should mention that I did have to rellocate to Seattle for a few months to work there, but it was a nice break from the D.C. Area--Seattle's an awesome city.

<comment><USER4> I would think most startups would be happy to hire interns... they are paid less than full-time employees and aren't necessarily less productive.

<comment><USER3> There's also the potential that they'll just get in the way and make things harder for a small team, though, especially if they're only around for 2-3 months.

</comment></comment></comment><comment><AUTHOR> myyoung8: I agree, I have no problem emailing, cold calling, or even just showing up to ask. When I was in high school I really wanted to work at a snowboard shop and I just went often enough and talked to the owner enough that he hired me even though I was 3 or 4 years younger than all the other employees, I just can't FIND the companies to do that. Thanks for the tips bokonist I'll check those out.</comment>


AOL Steals Content From Disabled & Unemployed Blogger - <AUTHOR> http://bowtiecamera.com/?p=44 <comment><USER2> Hasn't this been posted 5 days ago already? Though, at that time, the link was to the index of the site, now it's to the specific post.

(ref: <http://news.ycombinator.com/item?id=2112156>)

<comment><AUTHOR> sorry, there was an attempt to submit it 5 days ago, but it was never accepted (or it didn't seem to be). Today the YCombinator showed the headline, but 5 days ago (or whenver it was) after submit was clicked, it took me to a new users page, so I never thought it was submitted.</comment></comment>


We Don't Know How Bad the Coronavirus Epidemic Is - <AUTHOR> https://www.theatlantic.com/technology/archive/2020/03/how-many-americans-really-have-coronavirus/607348/ <comment><USER2> It seems like one should be able to construct at least a first order reverse estimate based upon in-care serious cases and deaths that have turned out w/o testing combined other nation's data for the disease parameters.</comment>


Ask HN: Serious 2010's Ruby on Rails vs Django opinions? - <AUTHOR>

I am currently planning to build a simple SaaS site (on the web front imagine something like http://www.campaignmonitor.com/). Since both Django and Rails are moving fast and previous comparisons get old quickly I am searching for up to date comparisons based on features + speed of development.<p>Thanks <comment><USER2> I would recommend going with whichever language you're more proficient with. That way when you run into something that the framework can't handle for you, you'll be able to work through the problem more efficiently.

<comment><AUTHOR> Thanks dan, but the language is not the issue, imagine that we have the same level of knowledge in python & ruby.

</comment></comment><comment><USER3> I don't know about Django, but take my advice and don't use Rails 3 just yet. It's not ready (for development mind you, albeit for production).

</comment><comment><USER4> There are still more Python libraries out there than there are Ruby libraries.</comment>


EmberCasts - <AUTHOR> http://www.embercasts.com/ <comment><USER2> Is there a way to download the casts?

<comment><USER3> If you inspect the DOM, you can see the links to the MP4/WebM videos. We'll add download links and a podcast feed soon.

<comment><USER4> > If you inspect the DOM, you can see the links to the MP4/WebM videos. We'll > add download links and a podcast feed soon.

Classic ember.js team response.

(the webcasts are great though)

<comment><AUTHOR> Or, you know, the Lean Startup response.

(While I posted this, I have no affiliation, to be clear. I just got a launch email today from being on the list.)</comment></comment></comment></comment>


Human brain boiled in its skull lasted 4000 years - <AUTHOR> http://www.newscientist.com/article/mg22029373.000-human-brain-boiled-in-its-skull-lasted-4000-years.html

<comment><USER2> A little addendum: brains are amazingly flimsy structures, not just due to the enzymes causing rapid decomposition, but because of their consistency which is equivalent to jello. This is why brains are generally denatured before dissections. Which is essentially what the heat did to those 4000 year old specimen.

<comment><USER3> The other interesting thing is that your brain couldn't function with cerebralspinal fluid. The weight of your brain would crush the brain cells at the bottom if it simply sat in your skull. Cerebralspinal fluid has a density that results in a bouancy that effectively reduces the weight of the brain to only a few grams.

<comment><USER4> > _couldn 't function with cerebralspinal fluid_

s/with/without/ (also, though this is just nitpicking, s/cerebralspinal/cerebrospinal/)

Cerebrospinal fluid (hereafter referred to as CSF) is actually very interesting. I don't think scientists/doctors have it fully figured out just yet (given how little we understand the brain in general, no surprise).

Of particular interest are persons with very anomalous findings: fully functioning _with virtually no real "brain" to speak of_, just plenty of CSF sloshing around. When I first came across this, I was certain it was a hoax.

 _Later, a colleague at Sheffield University became aware of a young man with a larger than normal head. He was referred to Lorber even though it had not caused him any difficulty. Although the boy had an IQ of 126 and had a first class honours degree in mathematics, he had "virtually no brain". A noninvasive measurement of radio density known as CAT scan showed the boy's skull was lined with a thin layer of brain cells to a millimeter in thickness. The rest of his skull was filled with cerebrospinal fluid. The young man continues a normal life with the exception of his knowledge that he has no brain.

Although anecdotal accounts may be found in medical literature, Lorber is the first to provide a systematic study of such cases. He has documented over 600 scans of people with hydrocephalus and has broken them into four groups:

       -those with nearly normal brains
       -those with 50-70% of the cranium filled with cerebrospinal fluid
       -those with 70-90% of the cranium filled with cerebrospinal fluid
       -and the most severe group with 95% of the cranial cavity filled with cerebrospinal fluid.

Of the last group, which comprised less than 10% of the study, half were profoundly retarded. The remaining half had IQs greater than 100._

More citations:

[http://flatrock.org.nz/topics/science/is_the_brain_really_ne...](http://flatrock.org.nz/topics/science/is_the_brain_really_necessary.htm)

[http://www.rifters.com/real/articles/Science_No- Brain.pdf](http://www.rifters.com/real/articles/Science_No-Brain.pdf)

[http://en.wikipedia.org/wiki/John_Lorber](http://en.wikipedia.org/wiki/John_Lorber)

<comment><USER2> This "virtually no brain" business is _highly_ misleading, and the implication that the brain is not the seat of the mind or intelligence is simply unscientific.

A lot of hydrocephalus patients have brainmatter displaced in the center, with the actual cortex often somewhat intact lining the cranium. It's true that the brain is amazingly redundant and especially damage sustained at a young age can often be fully compensated. But let's not jump into pseudo science. You can't take this "no brain" thing literally.

<comment><USER4> No, of course not. However, if the basic observations were truthfully reported, a brain one tenth the mass of a normal brain still able to somehow function (in some individuals) as well as a brain ten times it's weight is certainly food for thought.

The title of that article is of course tabloid trash. But I think there is something as of yet unexplained of interest in the mentioned subjects and their physiological situations.

<comment><USER2> True, but it bears repeating that the surface of the brain is where the magic happens, and that's only casually related to mass. Most of the mass in the center is for support structures and a place to thread interconnect fibres through. All that stuff still has to happen for a hydrocephalus patient to function, but there's a lot more mass than technically needed. Intelligence decrease in hydrocephalus comes from the tissue trauma associated with it, not necessarily the decrease in overall mass itself. Unexplained might be a bit of an overstatement, but there is certainly a lot to be learned from examining a little closer how the brain deals with damage.

<comment><USER4> Thank you. That clarified things.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> While all of this is really cool, did they learn anything from the 4000 year old brain? Has the brain changed at all in that time?

<comment><USER6> It seems that they have yet to analyse that more deeply. For now all they know is how it's possible that they have it in the first place.

</comment></comment><comment><USER7> For certain values of 'lasted'

</comment><comment><USER8> So, when I see this things I always wonder: can they extract DNA from it?

<comment><USER9> Would the DNA of a human living 4000 year ago be significantly different from yours or mine? What could we learn from it?

<comment><USER8> Definitely nothing, but I have always been curious about how long DNA can rest preserved.

<comment><USER10> About 10K years.

</comment></comment></comment></comment><comment><USER11> What a way to go.</comment>


Why I Hate Frameworks - <AUTHOR> http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12 <comment><USER3> On a related note, I saw this on reddit this morning: [http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server...](http://ws.apache.org/xmlrpc/apidocs/org/apache/xmlrpc/server/RequestProcessorFactoryFactory.html?rel=html)

What's sad is that I have no idea if this is a joke or not.

<comment><USER4> Perfect thing to show people, when they want to know if Java is a good fit for their problem. Even a Pointy Haired Boss, shown this, might understand why Rails or Django or something might be a better way to go than dealing with this.

EDIT: OK, so instead of Java, that should read "to know if enterprisey Java frameworks are a good fit for their problem." The irony is, that I just was IM'ing a friend about how this isn't the fault of Java the Language, but the "enterprise architecture" community that write Java frameworks like this.

<comment><USER5> Java is not the problem, the architecture is the problem. If you try hard enough, you can make something unwieldy and atrocious in ANY language. That's why enterprise architects get the big bucks.

<comment><USER6> That may be true, but it's a hell of a lot easier to make fugly spaghetti in something statically typed like Java (or C#, C++, and so on).

After 8 years of Java, I personally found it really refreshing to build stuff in Python and Ruby.

<comment><USER5> I don't know. After seeing some pretty unbelievable crap in VB, php, and javascript, I bet it's more a matter of numbers. The kinds of people who program in Python or Ruby aren't off the assembly line because the industry demand isn't as high. If one of those languages manages to become as widely used as Java, plan on seeing fugly spaghetti.

</comment></comment></comment></comment></comment><comment><USER7> Frameworks can sometimes be annoying. It's like learning a new sub-language on top of the programming language as there is a certain amount of familiarity you need with a framework's calls (ex. to program in Python, it goes a lot faster if you know that it's len(list) not list.length() and similarly if you're using Rails it's important to know that there is no validates_is_number, but there is validates_numericality_of). So, you start learning all these things that may or may not apply to your project - <USER2> language of the framework. And in some places it slows you down and you feel like there's abstraction just for the sake of abstraction, but in the end I think it's worth it.

I also think Joel misses something: most programmers are bad programmers. They'll dig you into holes, write lots of spaghetti string code, etc. At least when they're using a framework there's some constraint on their madness. Frameworks (generally) make it a tad difficult to work outside of their constraints and so the default becomes to work in that standard way. So, you don't get people doing weird things as often - like building a string that is the page that they'll echo out like the piece of PHP I'm working on today does (guess they didn't realize that you could simply go out of PHP mode to do that).

<comment><USER8> I guess I'm one of those bad programmers who does "weird things" , I often create a string with my entire page and then output it. I thought it made more sense since I now have a string that I can run regexes on or find/replace if necessary. Also it makes it easy if I decide I want to cache the page somewhere, I think I must be "dumb and gets things done."

<comment><USER9> PHP (I assume we're still talking about PHP) has had output buffering for about a decade. So yeah that is a weird thing. ;)

</comment></comment></comment><comment><USER10> An oldie (2005) but goodie.

Although it is less about frameworks and more about a disease which was largely contained to Java enterprise-y architecture stuff. (I say as a practitioner in that field... remind me why we are using the Factory pattern here, again?)

<comment><USER11> In fairness, the Factory pattern is useful when you want to unit test classes with mocks. In dynamic languages, this is easy, but more static languages require jumping through hoops.

Alternately, you could use something like Google Guice, but that's (sorta) a factory-factory.

Basically, no one likes the situation, but they've chosen their tradeoffs, which they see as the lesser of N evils.

</comment></comment><comment><USER12> A friend convinced me to try AppFuse once. I have a burning, probably un- justified hatred of Eclipse, so I tried the AppFuse + NetBeans tutorial.

That may be the most unproductive I have felt in my entire life. I made a damn login form and it took like 12 pages of tutorial, tons of setup, generating a whole bunch of files that seemed like they could have been done algorithmically because they are always the same, editing like nine different XML files with little bits of glue, and eventually like one or maybe two lines of code.

Then, I got to wait for the WAR to compile each time I wanted to test a change, because the tutorial didn't seem to know about a developer mode which probably exists.

I hate to sound all ranty and partisan, but I could find no way in which that process could be efficient and couldn't imagine anyone doing it voluntarily unless they were ordered or just had no exposure to the rest of the world.

Also, I sort of object to having code stuffed in an eight-folder deep hierarchy where the preceding seven folders contain nothing at all. That's a lot of wasted navigation and clicking time and distraction.

<comment><USER3> There's most likely a developer mode, but that's only good for reloading a change to a Java class file. Reloading an xml file will still take a restart of the servlet container. I agree with you that there is basically nothing efficient about the entire process.

</comment></comment><comment><USER13> Over-complexity is common in the Java space. I was aghast at using JMS. You make a Context so that you can tell it to make a ConnectionFactory, so that you can then ask that thing for a Connection, _then you finally get to login_. You can then instantiate Producers and Consumers and finally get messages.

Why do I need to have 5 different objects when one would do? Having 5 different objects did absolutely nothing for the client code except make it more complex. (And this actually complicates good coding for the user experience. When we notify the user of network problems, I have to add additional code to see if objects exist in the first place just to prevent exceptions.)

It would've made no difference if there was just one Object. (Except for shorter code.) I could use it to login to a server. I could use it to register interest in a topic then ask for messages on that topic. If I want to connect to a different server, then I could instantiate a second object. Why do I need 5 freaking instances to do the most basic thing possible?

<comment><USER3> This also makes unit testing extremely diffcult since you have the joy of creating mock objects for your Context, ConnectionFactory and Connection. I have all but given up writing test code at work. The various j2ee frameworks I have to use make it almost impossible.

<comment><USER14> Drop Classic J2EE and learn Spring. It will make things sooo much easier and manageable.

<comment><USER15> It definitely does make the above more manageable, but it doesn't solve the core problem which is that the whole design pattern is built for complete configurability, but without sensible defaults. In some sense, Spring only exists to manage the massive configurability of Java design patterns, but by adding it's own configurations to the mix. It's definitely a cool idea, but the better solution is to just avoid factory/context patterns. It's solving a problem most of us don't have.

<comment><USER14> """It's solving a problem most of us don't have."""

I think that is because a lot of people simply don't know what good design is. I've seen many projects where people think they don't need Spring but where it made 100% sense. And made the project simpler and easier to manage and test.

Even in small projects it makes a lot of sense to have a good seperation in layers or services and to use a _mostly_ invisible helper to glue things together.

Modern Spring can configure your app with a very minimal amount of XML. If you don't like XML then use annotation based configuration.

I totally disagree with your statement that Spring only exists to manage the 'massive configurability of Java design patterns'. The only patterns that the foundation of Spring introduces are IoC and 'configuration by convention'. Those have been proven to be extremely powerful patterns that simply allow you to burn half of the 'J2EE Design Patterns' books.

</comment></comment></comment></comment></comment><comment><USER16> Frameworks - used properly - can be INCREDIBLY helpful.

Why develop my own routing code when there's already a robust, well-tested version available? Or validation code? Or payment authorization code?

Though it needs to be said that the number one thing a good framework does is GET OUT OF YOUR WAY. I've seen some Java frameworks that take an hour to put together a simple Hello World and that's just nonsense.

Currently I'm using Kohana, which is nice because it's really very simple and easy to extend. So far I've been able to spend so much more of my time actually writing business logic instead of routing logic and the like.

<comment><USER15> Unfortunately, JSR-168 compliant portlets are perhaps the crowning example of horrible implementations of an insane standard.

</comment></comment><comment><USER17> Rails: Here's a kick-ass hammer, a kick-ass saw, a kick-ass measure tape, etc...

Oh, and if you need them to be different from the default, you can modify them as you want, but we think the default works for most people.

<comment><USER18> But don't bother checking for the spring mechanism that retracts the measure tape in case it breaks or the power supply connection point on the saw if it stops working.

Those bits just magically work!

:)

<comment><USER17> They don't magically work. You'll understand the mechanism when you know a bit more about how to build a measure tape and a saw. Also, all the so-called magic is extensively and automatically tested, and so an order of magnitude more reliable than your own custom-rolled spring mechanisms.

<comment><USER19> Exactly. This is why the article is such a bad analogy - frameworks makes things simpler by handling things you'd already do without them.

If you're making a spice rack:

Without framework: DIY shed filled with tools

Framework: IKEA

<comment><USER17> Well, not quite... that's a bad analogy too, actually... Rails isn't IKEA - and most java frameworks are definitely _not_ IKEA.

Frameworks are tools, not end products.

<comment><USER20> Have you tried assembling an Ikea flat-pack?

<comment><USER17> Many times, and I can't for the life of me understand why anyone would struggle at it.

IKEA provides flat-packed products. You never buy a wardrobe at IKEA and then turn it into a couch instead. It will always be a wardrobe, and nothing else.

On the other hand, if you buy a set of tools and environment (aka framework) to build furniture, you can use it to build whatever furniture you want/can.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> I stopped reading after "In the process, I'm evaluating a bunch of J2EE portlet-enabled JSR-compliant MVC role-based CMS web service application container frameworks."

<comment><USER21> That was humor :)

The rest is funnier. Give it a try.

</comment></comment><comment><USER22> The more people talk about J2EE, the more I think it was invented to give programmers busywork and multiply their workload with no increase in productivity.

<comment><USER23> Sort of reminds of project management software: it's just there to keep the project manager busy.

</comment></comment><comment><USER24> The essay itself is funny and rings true, but then in the comments the author says:

 _"What I'd really like to find are some appropriate libraries that I can use to provide several kinds of functionality for my project."_

And then lists a bunch of high-level website functionality requirements (user accounts, content management, etc). I realize that the J2EE landscape was drowning in complexity and was pretty dismal in 2005, but this guy doesn't understand the issues involved in developing web applications.

First, to suggest that individual libraries can provide re-usable high level web application code is completely ludicrous. It can't work for so many reasons:

* All those libraries will have to interact, and the interface between them will be complex. If they do work together they will end up being tightly coupled and before you know it you have a framework.

* High level functionality that includes data models, persistence, and presentation layers is not generic enough to effectively be a library. The complexity and configuration would quickly balloon out of control before it met even the requirements of 5% of web applications.

* Such libraries would end up being far more constricting than a traditional framework. A good example is Drupal, which is a very powerful framework/CMS with an impressive hook system, and an extremely high code to functionality ratio. Anything you might want to do with a website can probably be done in Drupal using a combination of existing modules, and you can write additional modules that access almost any part of the system and modify its behavior. The problem is that fine-tuning of the interface or certain kinds of customizations become very difficult under the crushing weight of the underlying assumptions that Drupal makes to enable it's magnificent generic-ness. The result is that all the various sites made with Drupal end up feeling very Drupal-y and there's a disincentive to really design your UI from the ground up and create a very optimized application.

What J2EE has blinded the author to is the fact that web frameworks exist to solve the most common problems that come up over and over again in web development. He needs to go write a few PHP applications to get a feel for the issues, then try something lighter-weight like Django or Rails that confronts those issues directly and then basically gets out of the way. In the first half of the decade it was hard to find a good lightweight framework because people were still wrapping their heads around the actual issues that needed to be solved. Nowadays, not so much.

</comment><comment><USER25> This is about as ridiculous as trying out one bad programming language and then writing an article titled "Why I Hate Programming Languages". Clearly the author has a problem with one particularly bad set of frameworks he's dealing with now, and one set of framework-making mentalities. Yes, there are bad frameworks. There are good frameworks too. I don't imagine anyone draws their own buttons on the screen anymore. To continue the discussion in any general format is useless, since there are countless examples of bad frameworks and countless counter-examples of good frameworks. A more compelling discussion would be one on what makes certain frameworks useful rather than trying to place a final value judgement on the idea entirely.

</comment><comment><USER26> Here's the dirty little secret that no one wants to talk about...

The purpose of "assisters" like frameworks and higher level languages is NOT to make good progammers more efficient.

It's to make mediocre programmers more likely to produce _something_ of value and to make poor programmers capable of producing anything at all.

And if the bell curve tells us anything at all, it's that these "tools" target 90% of all programmers.

But think about it, my fellow top 10% (lol), do you really need all this stuff? If you're working alone or on a small team with a clear objective, haven't you always had everything you needed with low level tools? If you need any higher level tools or reuseable components, haven't you already been building these all along?

Sure it's fun to play with new things and learn from others, but when it comes time to really produce, don't we all know how to (and need to) roll with what we know?

The need for frameworks and high level languages only becomes apparent when we grow so large that we _can't_ find enough senior hackers. Only when you dip down into the mediocre masses do you need this help.

<comment><USER23> I agree completely. Web frameworks add a layer of code bureaucracy that really doesn't need to be there in most cases. Reading and setting browser cookies is not that hard. Creating and reading web forms and validating inputs is not hard. Creating a relational database schema and objects that store themselves in that schema is not hard. You can do all of this directly in mod_python, essentialy by buildng your own framework, so you really don't need Django (I'm know, I'm a heretic for saying so) But doing all of these things directly mod_python takes time to learn how to do it reliably and efficiently. So I understand Django's appeal to people who picked up a Python book and asked "How do I create an event calendar web site in five mouse clicks?" and didn't see a direct answer to that question so they went with a framework. Personally I'd rather not toil under the tyranny of someone else's framework, especially when they suggest you need to create Factory for a Consumer then connect it to an Active Bridge connector... no thanks, I'll just use "mod_python import Cookie" instead.

<comment><USER16> "essentially by building your own framework"

Why build your own framework when there's one already there? Already well- used, well-tested, well-extended?

Sure it may be easy enough to do, but is it really worth it?

I, for one, would much prefer to be spending my coding time writing application logic than Yet Another Validation Library.

<comment><USER27> Because frameworks aren't optimized to your use case.

<comment><USER16> Hell, programming languages (typically) aren't optimized to your use case. You modify them to make them so.

Good frameworks are the same way. I've already extended the hell out of Kohana to make it more useful to me. This is work I would have had to have done if I weren't using it, sure, but all the basic stuff is there all the same.

<comment><USER27> Sure, it just depends. Quite often, I've found that modifying someone elses code takes orders of magnitude longer, than just writing it yourself.

<comment><USER28> the difficulty of modifying somebody else's code is proportional to your own programming skill.

<comment><USER27> Yeah I'm not sure that's actually true :)

Would you rather build a porche, or try to convert a clapped out old volvo into a porche?

Tidying up rubbish, bad architecture choices, stupid coupling etc isn't fun. It's twice the work - fixing all the stuff they did stupidly, and then implementing it how it should be done.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER29> I feel the analogue here is a bit off.

I'd say a framework is more like a factory that produces a variety of fixed- size spice racks (among with other products). You have to learn what button to press to get the right ones, and the spice racks produced will never be exactly how you want them to be.

If you want to quickly generate lots of generic spice rack, then a spice rack factory is all you need. But if you want something really outstanding and unique, then a factory may be anti-productive, and you are better off building it with your own hands.

</comment><comment><USER30> I've seen good frameworks (OWL, Nitrogen + Powerplant, maybe 1 or 2 more), and I've seen a crap-ton of bad frameworks (any web framework on java, minus _maybe_ WebObjects).

They're necessary, but they're hard to do right. The man who did Powerplant said he went through about a dozen different designs before getting one he liked. That's why it was often so useful. Most times, people say "hey, let's take these APIs and let people subclass! yay!"

And that's how you end up with crap like doGet(), doPost(), etc.

<comment><USER4> "minus maybe WebObjects"

What made WO great were the tools. There was still complexity there, but WOBuilder and EOModeler made the whole process very productive. You could think of your data model, your interface, and your business logic independently of each other, and then use the tools to hook them together in a way that made sense. Because of the way the tools were designed, they actually made using good design for your application easier than using bad design.

That's the main thing missing from all the frameworks I see today, integrated tools that automate the tedious parts and encourage good design practices.

To me, the WO tools go on the heap with the Lisp Machine, the Xerox Park Smalltalk environment and HyperCard, as old development technologies that are still ahead of today's state of the art.

EDIT: spelling correction

<comment><USER31> That would be _Smalltalk_ not _SmallTalk_ , and some of us still use it, daily, for web apps. It might not be in wide use, but it isn't on the scrap heap.

<comment><USER32> People still use WebObjects everyday too (I used to be one of them), but not very many. I'd say WebObjects is basically on the scrap heap.

</comment></comment></comment></comment><comment><USER33> Was anyone else put off by "And, if you want to kill your ex-girlfriend, there's really no substitute for a ball-peen hammer"?

I get it's a joke, but violence against women, when used in a semi- professional context in a community of software engineers is one of those things that keeps more women out of the field in the long run.

I'm not trying to be PC intentionally -- it just struck a raw nerve for me.

<comment><USER27> That's just.... ridiculous. The main thing that keeps women out of the industry is the fact they don't want to be in the industry and for you to suggest otherwise, is sexist.</comment></comment>


D3, Conceptually - Lesson 1 - <AUTHOR> http://code.hazzens.com/d3tut/lesson_1.html <comment><USER2> It looks great but like so many web sites focused on a tech project, it lacks a "what is D3" section. I read the preface, and I see that "D3 is a powerful tool" OK, and "D3 is really a beautiful little library" and it solves the problem of turning data into documents. Yes but how?

I'm not saying I can't figure it out from the code, I can. But still a "what is D3" section would help.

The site looks like a really nice mix of prose explanation and code examples. And D3 looks very intriguing whatever it is. OK I'm off to Google now.

<comment><USER3> I don't see why the author needs to add a "what is D3" section to a tutorial. A visitor to a tutorial site for library_x is pretty likely to know what the purpose of library_x is.

I think he's targeting his audience well. I'd imagine most of his users arrive like this...

      1) I need a data visualization library.
      2) D3 seems to be a good one.
      3) Read the D3 docs at the project's homepage.
      4) I still need help learning D3.
      5) Google for tutorials.
      6) End up at this person's tutorial.

"What is D3" would make sense if users did this in reverse (like I'm sure some people clicking on this news item have done), but I don't think that's the normal use case and I don't blame the author for not addressing it.

<comment><USER4> Disagree. I (thought) I know _roughly_ what D3 is, but it would still be nice to have a (single paragraph, even) introduction. A framework can be pretty broad, so the intro would also signal what the author beliefs D3 is useful for and what techniques he intends to teach the audience.

For these reasons, I hold that _any_ piece of technical writing needs an introduction, no matter how familiar the intended audience is. It doesn't need to be long. But it does need to have its place (at the beginning).

HOWEVER! Either we all overlooked this: <http://code.hazzens.com/d3tut/lesson_0.html> (because this article links straight to lesson one) or the author has added an introduction in the mean time, because it _does_ have an introduction :) So, all is good :)

(BTW I thought that D3 also brought a 3D framework to the canvas, but I see no mention of that anywhere--maybe I"m confused with the name and something else?)

<comment><USER4> also, I love the first line of the intro:

        D3 is a powerful tool, but you know how that saying goes:
        "With great power comes a conceptually clean library with a
        learning curve like a wall".

I don't care if it's true or not, good writing :)

</comment></comment></comment></comment><comment><USER5> I like the tutorial. One thing that catches my eye though is the unnecessarily complex example from the beginning:

      d3.selectAll('div')
        .text(function() {
          var index = Array.prototype.indexOf.call(this.parentElement.children, this);
          return (index % 2) == 0 ? 'Even' : 'Odd';
        });

No need for calculating the index variable - it's already provided as the second argument of the function passed to the text() method:

      d3.selectAll('div')
        .text(function(d, index) {
          return (index % 2) == 0 ? 'Even' : 'Odd';
        });

</comment><comment><USER3> (I might have missed it in your tutorial, but if not...) It might be worth noting for your readers that attr, style, property and similar methods can accept an object as the argument. Might save people a tiny bit of typing...

        root.selectAll('rect')
                .data(rects).enter()
            .attr({
                x: function (d) { return d.x; },
                y: function (d) { return d.y; },
                width: function (d) { d.w; }
            });

<https://github.com/mbostock/d3/pull/277>

</comment><comment><USER6> While learning D3 I was surprised that it's a good general system for manipulating DOM. Using SVG is just the prettiest application of it.

<comment><USER7> D3 is indeed a well-thought-out library for connecting data with DOM. Of Javascript frameworks that I have played with, jQuery and D3 are the only ones that I've truly enjoyed. And although D3 and jQuery have a lot of overlap, it's easy to mix them. We are using both at Fount (<http://fount.io>, just an early demo at the moment). We use D3 for data displays and jQuery for Ajax and the rest of the UI.

</comment></comment><comment><USER8> This is exceptionally readable, many thanks! Partially the language is succinct and well written, partially it doesn't try to teach me Javascript :| Please please please continue, and consider writing others, you're good at this.

</comment><comment><USER9> Borderline off-topic:

What are the best open-source charting libraries available right now (in terms of looks)? D3 or not, although I'll prefer D3, as it would be easier to extend.

I'm looking for something as pretty as Highcharts, to use in open-source apps.

<comment><USER10> flot (<http://www.flotcharts.org/>) has been a loyal friend for years.

<comment><USER11> Any comments on flot vs flotr2?

I'm trying to choose which to use for a project, and I can't find much reason to prefer one over the other.

</comment></comment></comment><comment><USER12> This is a nice tutorial. I like the order and accessible way it introduces selections and data binding, which are some of the harder things to get into when starting with d3.

<comment><USER7> I think Mike Bostock's (the author of D3) tutorials are really high quality too. <https://github.com/mbostock/d3/wiki/Tutorials>

However, once you dive a bit deeper with selections and nesting, there are some things that are not immediately obvious how to structure. For example, when we implemented small multiple visualization, figuring out the best way to structure enter and update sets for nested data took a few attempts.

<comment><AUTHOR> This is one of the main reasons I'm writing these tutorials - small multiples (nested selections) in D3 are explained very poorly in the official docs, and are a constant stumbling block for coworkers not very familiar with the library.

Sadly, getting around to properly explaining them will take another lesson or two.

<comment><USER13> Results after the first one fail to load in the latest Firefox. It looks like a Firefox bug btw, the style and script tags are not being added to the created iframes (except the first, which is always ok) unless I mess with the timing, either by using a 100ms delay in setTimeout() or a breakpoint with Firebug.

PS: it's a fantastic tutorial, thanks for writing it!

<comment><USER14> I can indeed confirm that only the first example is displayed in firefox (17.0 on Windows XP)

<comment><AUTHOR> A little late, but I think I fixed this. Working for me now in 17.0/Windows 7

</comment></comment></comment></comment></comment></comment><comment><USER15> Scott Murray has published some great tutorials on D3.js (<http://alignedleft.com/tutorials/d3/>), and has an O'Reilly book on "Interactive Data Visualization for the Web" that's about it as well: <http://shop.oreilly.com/product/0636920026938.do>

<comment><USER16> The ebook's 50% off today, if you use CYBERDAY as a promo code.

</comment></comment><comment><USER17> D3 provides awesome data driven visualizations. However the code samples on d3js.org site though good have no real explanations. I am hoping these tutorials will fill the gap.

</comment><comment><USER18> One topic I wish you would cover is offline saving of graphs generated from D3.js in a subsection of your articles [0].

[0] [http://stackoverflow.com/questions/12719486/d3-js-graphs- out...](http://stackoverflow.com/questions/12719486/d3-js-graphs-output-into- high-resolution-print-quality-files)

</comment><comment><USER19> Looks nice. I'm not sure if I like the semantics of the .data selector. Especially since I come from jQuery I would think of it more to do with data attributes.

</comment><comment><USER20> I was expecting some concepts for the D Language version 3.

<comment><USER21> Or some Diablo 3 platform/engineering related article, or Nikon's D3 camera repair guide, or something else.

More informative titles help people unfamiliar with great tools (such as d3.js - an outstanding JavaScript lib for manipulating documents; see d3js.org) get to know about these tools.</comment></comment>


Python Multi-armed Bandits (and Beer) - <AUTHOR> http://blog.yhathq.com/posts/the-beer-bandit.html

<comment><USER2> Epsilon greedy? It's the simplest, but also the most uninteresting bandit algorithm.</comment>


1. August Bitcoin will probably hardfork - <AUTHOR> https://www.bitcoincash.org/ <comment><USER2> Bitcoin will never be the cash replacement that people want it to be. Just the fact that it has a limited number of coins makes it a problem. Adding transaction capabilities is a problem since ultimately it destabilizes the trust for it. Every time people need to change the code they'll be a danger of a fork which destroys a little bit of a trust. The fix is to use it as a base for a token based network that can be used for transactions.

<comment><AUTHOR> > Bitcoin will never be the cash replacement that people want it to be. Just > the fact that it has a limited number of coins makes it a problem.

There will in fact never be more than 21 million bitcoin. But these are already 2100 trillion Satoshi today. This divisibility can be expanded in the future.</comment></comment>


What happened to stackoverflow on this question - <AUTHOR> https://stackoverflow.com/questions/45590236/running-goimports-on-save-in-goland <comment><USER2> On other questions too, so I'd guess April fools? (It's April 1st in New Zealand already)

</comment><comment><USER3> Early April 1st, I guess?</comment>


Amazon Isn't Killing Writing, The Market Is - <AUTHOR> http://techcrunch.com/2014/07/17/amazon-isnt-killing-writing-the-market-is/ <comment><USER2> Comparing streaming of books to streaming of music or streaming of TV/Movies is comparing apples and oranges. I don't think any past data will prove very relevant. For one, the context is completely different with regards to time for a read. I'm not just committing a couple of hours like a show, movie, or music. I need to commit longer. I'm less likely to just pick up a book on a whim, like I will a song, TV show or movie. The commitment is just not there.

If anything, the book streaming service will be more like a gaming streaming service than anything. I actually think this would benefit a lot of the smaller writers who might not get as much due to the "no harm no foul" of streaming a book I don't like.

<comment><USER3> The point of the article is that "streaming" books will be different than streaming music and video.</comment></comment>


Population of young whites falling faster than expected - <AUTHOR> http://www.nytimes.com/2011/04/06/us/06census.html

<comment><USER2> So what? And at the risk of being cliche, how is this hacker news?

 _"If they'd cover it on TV news, it's probably off-topic."_

Yeah, seems just about inane enough for television news.</comment>


Show HN: A Forum with a Strange Minimalist Interface - <AUTHOR> http://pivory.com/#topic/1001

<comment><AUTHOR> 1) Get into fullscreen mode.

2) Swing your mouse to a corner or a border, and click.

3) There are 14 possible functions depending on which corner / border you choose.

Gone are the old days of finding buttons :-)

There are more functions hidden in it. And it has native support of TeX and Code - good for discussing scientific / programming topics. Let me know your comments and feedback :-)</comment>


Ask HN: What would be the best project management tool for this use case? - <AUTHOR>

I am running multiple projects at once.
Each project needs to go through X amount of stages which must be satisfied before the project can be completed: things like.
- Customer is on account type X. - Customer has been sent introduction email - Customer has returned documentation.
Once a stage is completed, a box would be checked.
I would like to be able to see the projects side by side.
Essentially looking for a to-do list which can handle multiple lists on one page.
Thanks <comment><USER2> [https://github.com/httpsGithubParty/FOSS-for- Dev](https://github.com/httpsGithubParty/FOSS-for-Dev)</comment>