Live data from Hacker News

Stop pushing the web forward

quirksmode.org

211–220 of 307 posts

Re: Stop pushing the web forward

#211
post #48
post #9

I've seen this sentiment a few times: "don't try to replicate native apps in the browser." Which makes sense from the standpoint that the browser is just getting ridiculous, like a mini-OS unto itself. However, web apps also allow organizations to write once for many platforms in a much more seamless way than most cross-platform native toolkits I've seen. It's the same reason that desktop Java was in vogue for a litt…

The cross platform experience will never match the native experience. Think about on the desktop. The only cross platform apps that behave natively on Mac, Windows, GNOME (and derivatives) and KDE are apps tha have completely separate front-ends for every platform. Firefox is an ok example of this, although it in a way forms its own platform rather than integrating with its host, still it pulls it off better than oth…

But, even Firefox has a rather limited UI... Whenever you build anything with a moderately complex UI, it becomes nearly impossible to offer a good cross-platform experience.

I also think that standing on the shoulders of bootstrap and material design (like materializecss) is a better place to start where users will be cross platform than trying to look native everywhere... not to mention that native looks different every other OS release. Hell, look at MS Office from version to version, they break most of their own rules. A relatively clean, usable design is more important than getting everything precisely native looking everywhere.

Re: Stop pushing the web forward

#212
post #48

Earlier quoted context omitted.

The cross platform experience will never match the native experience. Think about on the desktop. The only cross platform apps that behave natively on Mac, Windows, GNOME (and derivatives) and KDE are apps tha have completely separate front-ends for every platform. Firefox is an ok example of this, although it in a way forms its own platform rather than integrating with its host, still it pulls it off better than oth…

Facebook.com and Hacker News are cross platform apps, and they work amazingly well.

Of course Facebook.com has been removing functionality from their mobile website for some time. At this point when you post a link from mobile it doesn't even add the thumbnails anymore. I know it's to drive people to use the native apps (so they get much more tracking information, and run your battery down faster). But the affect is just pushing me away.

Re: Stop pushing the web forward

#214

Earlier quoted context omitted.

All because Microsoft wouldn't break down and embed SQLite into their browser like everyone else did for WebSQL. It's actually really disappointing. IndexedDB could be built on top of WebSQL as a shim... you can't really do the reverse so easily. It's really disappointing... WebSQL/SQLite with a template string builder interface would be amazing. (I know it's an ES6 thing). I will say, that I do want what's on deck f…

Hmm... would it be possible, using Promises, to create a sorta-shim, you give it a SQL query and a callback function. The shim does asynchronously all the stuff a DB engine does (most people are going to use "SELECT cola,colb,colc FROM x WHERE foo=bar and baz=quux ORDER BY cola ASC GROUP BY colb" and nothing more complex anyway), then tracks all the stuff it needs to do in its own promise tracker. Once all is done, i…

If you don't really need true locking pessimism it's more possible... There are actual SQL engines in JS though.

Using a single queue to run queries through would be relatively easy to do... a stage 1 analysis of what collections you need to query could then push the query into one of several queues for pipeline requests.

It would be interesting, but I don't mind IndexDB (or localStorage for that matter) enough to really bother with it.

Re: Stop pushing the web forward

#215

Earlier quoted context omitted.

> [The JVM is] still unusable for end-user applications because [it makes application startup slow and uses too much RAM.] I can't agree. The poster child for "bloated, overweight, slow-as-shit Java application" is Eclipse. Circa 2013, I found it to be not substantially slower or any less usable than Visual Studio on the exact same hardware.

In fairness Visual Studio (and most IDEs) are pretty bloated and slow. As to the grandparent, that is what asm.js was for, was a subset of JS that could be heavily optimized and JITed... I also really prefer .Net method of native invocation over JNI stubs.

After several years of working with VS, Eclipse, and a couple of other developers' IDEs, I can say -with a straight face- that developers' IDEs are slow primarily because they do a lot of work.

Re: Stop pushing the web forward

#216
post #30
post #8

> But why do web developers want navigation transitions? In order to emulate native apps, of course. If we're doing unpopular opinion time, I think this is the real issue that no one wants to talk about. I'm all for whatever feature development the community can standardize. Apple, google, mozilla, and etc. all have smart people working for them and when they cooperate things seem to work out fine. The problem is try…

I'm sorry but how would making browsers the operating system cause the incompatability problems to reappear? I think this is massively ignoring the realities: - there's almost no native-feeling cross-platform UI library for native apps at the moment - There's a standard for most things happening in a browser, which means that things look pixel-perfectly the same on a huge amount of browsers. Differences among current…

> The browser is basically what the JVM tried to be, a write once work anywhere solution that is pretty well sandboxed. It's miles better than pretty much every other cross-platform piece of tooling in existence.

I'd say Flash is better than a browser. Flash seems to fall apart when embedded into a browser, but stand-alone it is decent. And it's IDE/tooling is top notch too.

Re: Stop pushing the web forward

#217

That happens all over tech, not just in web browsers. Just for fun, I've spent a couple of minutes compiling a list of technologies, just for the backend side of things , which many of us know or have heard of, which ilustrates the complexity and diversity that we have in our industry atm. It's both beautiful and scary at the same time - how will we be able to move all of that into the future ? How will we scale our…

> Step 1. Pick a language.

Since the focus seems to be on web backends (given the section following this one), I'd imagine that trying to use C or C++ for such a thing would not be one of the obvious choices.

Also, you've listed Scala twice, I'm pretty sure Xhp and Hack count under PHP, and God help you if you opt to use ColdFusion or ASP.NET (or PHP, for that matter) in anything new.

> Step 2. Pick a framework for the selected language:

Once you've picked a language, you can usually narrow down the selection quite a bit. For some languages it's a bit harder, but for most, the choices are manageable.

C/C++ -> Raphters, CppCMS, WSO2, Wt, ffead-cpp

Go -> Revel, Martini, Gorilla

Java -> Spring, JSF, Struts, GWT, Play, Grails (if we count Groovy as Java), maybe some others that I haven't heard of yet

Ruby -> Rails, Sinatra, Padrino (which is basically Sinatra plus some helpers for databases and views), camping (if anyone actually uses camping in production, please let me know)

Python -> Django, maybe some others (but Django's the only one I hear about regularly)

Dart -> does anyone even use Dart? I'm pretty sure even Google has moved on to Go for backend stuff, and the plan to integrate Dart with Chrome was apparently cancelled.

PHP -> Laravel... I can't think of any others that I've actually seen used. Pretty much every PHP app I've encountered was CGI-based.

Erlang -> YAWS or ChicagoBoss. If you're counting Elixir with Erlang (we might as well), then we can throw in Phoenix and Sugar.

D -> vibe.d is the only one I know of

Javascript -> Node.js, probably.

Perl -> Catalyst, Mojolicious. Or just use (Fast)CGI.

Scala -> Play, Scalatra, Lift, Sweet, Slinky

Clojure -> Compojure, Webjure, Conjure, Moustache

Lisp -> (Common -> Weblocks, possibly Hunchentoot), (Scheme -> SISCWeb (via J2EE)), Racket

ColdFusion -> ColdFusion. I don't know if ColdFusion doesn't instead count under the Java category, though.

ASP.NET -> I dunno, ASP.NET?

Basically, once you have a language picked (based probably on which one looks the best to you), it's pretty straightforward to search the web for "$LANG web frameworks" and find some sort of comparison between them.

> Step 3. Pick a database:

If you're not picking PostgreSQL, then you're wrong, end of story. Maybe CouchDB or Mnesia if you know for sure that you need their replication features and are aware of the tradeoffs of using a non-relational database.

SQLite deserves special mention, because while it's absolutely wonderful for end-user applications, it's not at all ideal for server software except for specific use cases (like using it as an offline data storage format, e.g. for backups or data imports/exports).

MongoDB, Oracle, MS SQL Server, and MySQL also deserve special mention because, if you're using them willingly in a new application (other than to interface with a legacy system that did involve such a regrettable choice), you're probably not right in the head. In particular, there's pretty much zero reason to use MySQL instead of MariaDB (which is also arguably marginal due to its MySQL heritage, but at least it's slightly better), using a commercial database like MSSQL or Oracle is basically begging for vendor-lock-in-related problems, and MongoDB... Jesus fuck-me-in-the-ass-with-a-pogo-stick Christ. Might as well just pipe your data to /dev/null while ranting about how it's "web scale" while we both transform into 3D-animated bipedal animals and I resign from my job as programmer/sysadmin and go shovel pig shit for a living.

> Step 4. Pick a hosting provider: Classic or Cloud and pick from just several hundred providers with different APIs and architectures.

If you're smart, you'd go with Cloud Foundry, since a large number of PaaS vendors support it, so you can pretty much just pick whichever one has the best bang for the buck (might I suggest IBM Bluemix?) and use the `cf` tool to deploy to it.

Additionally, if you're using containers of the Docker variety, the vast majority of PaaS and hosting companies nowadays support them with little to no modifications, so - again - the choice matters very little beyond one's priorities regarding performance, location, and cost.

> Step 5. You're all set! Enjoy your backend. Now it's time to pick a front-end !

Now that is a massive can of worms. So many frontend frameworks. So little time. And pretty much all of them constrained to the quirks and pains of Javascript.

Of course, you could just go with straight HTML and CSS (plus a smattering of JS using JQuery or Mootools), which is what I generally prefer to do in most cases.

Re: Stop pushing the web forward

#218

Earlier quoted context omitted.

> [The JVM is] still unusable for end-user applications because [it makes application startup slow and uses too much RAM.] I can't agree. The poster child for "bloated, overweight, slow-as-shit Java application" is Eclipse. Circa 2013, I found it to be not substantially slower or any less usable than Visual Studio on the exact same hardware.

That's implying that Visual Studio isn't also bloated, overweight, and slow-as-shit - three traits which VS serves as the textbook definition of. It makes Emacs look like ed in comparison, yet without offering any actual improvement in functionality. In other words, "but it's on par with Visual Studio" does absolutely nothing to counter the argument that the JVM is unusable for end-user applications; if anything, it…

After several years of working with both VS and Eclipse, I can say that IDEs are slow because they're doing a lot of work. (Eclipse suffers a bit because the Eclipse Steering Committee[0] won't let go of the dream that is the Eclipse Platform, but that dream primarily damages the ease of writing software for Eclipse, rather than Eclipse's execution speed.[1])

Consider two applications that each solve tasks of comparable complexity:

One of these applications is written in C++. The other is written in Java. Both are written by programmers skilled in their respective languages.

If both of these programs have roughly equivalent performance, what does that say about each underlying language?

[0] Or whatever their official name is.

[1] Source: In a former life, I was tasked to write and maintain bespoke software written on top of the Eclipse Platform. I cannot recommend the Platform for any new development that isn't writing software for Eclipse, itself.

Re: Stop pushing the web forward

#219

Earlier quoted context omitted.

Browsers should have one built-in navigation transition. When you click on a link that leaves the page, something should happen immediately . It may take seconds for the new page to load, especially on cell networks. There's no immediate user feedback, resulting in multiple clicking, which restarts the page load. So on page exit, something visible should happen. Dim out the page, zoom it down to a tiny rectangle, swo…

> When you click on a link that leaves the page, something should happen immediately . On every browser I use, the UI changes immediately after clicking a new link. Pay attention the next time you click a link that's not in cache. Look for messages in the status bar (which is usually hidden, but typically becomes visible on resource load or when hovering over a link), changes of favicons to spinners in tabs, and the…

Here's Firefox, immediately after entering a site name into the URL window.[1] The only visible effects are that the tab name has changed to "Connecting", and the reload arrow has change to an "x". On Firefox Mobile, you don't get either of those, just a one pixel high progress bar at the top of the screen. It's worse on mobile, where things are slower and there are fewer auxiliary GUI items on screen.

At this point, you've only partially left the page. Some clickable items on the page being exited will still work. It's not entirely clear exactly when event processing for the old page stops.

[1] http://s3.postimg.org/53784icoj/afterlink.png

Re: Stop pushing the web forward

#220

“Everybody will have a favourite upcoming feature that would be hit by the moratorium — mine is offline capabilities.” Mine would be next-generation image handling — tags* and some sort of alpha-blendable lossy format. I work for a lot of artists and designers, these guys want fast, retina full-screen responsive images, and I’m not sure that it’s an unreasonable expectation, but I’ve got enough technological hoops to…

> I work for a lot of artists and designers, these guys want fast, retina full-screen responsive images, and I’m not sure that it’s an unreasonable expectation, but I’ve got enough technological hoops to jump through to recall the days of “Netscape Now!” and “IE 5” badges. Do the users want those too?

sure wish someone had explained why they disagreed instead of downvoting me :\
Post reply on HN