markdown guide
 

What are the majority not thinking enough about?

The efficiency of native desktop applications.

 

And the plethora of new native-focused tools for native development.

Seriously, what is wrong with everyone pushing webapps for everything?

 

Can you go in detail about the new native-focused tools?

I'm mainly looking towards Rust, with e.g. Conrod or a few other initiatives.

C++ is still in the field, with Qt, and a few recent projects I couldn't name because I don't remember their names.

Java, with JavaFX, or dotnet, is quite powerful and supports XML/CSS templating.

Python, ruby and some other interpreted languages also have their solutions and, while the language is interpreted, it doesn't require an entire browser instance to work, so it's still overall quite lightweight.

I'm familiar with Windows Forms, which is done within Visual Studio, so I assume it's similar to a dotnet desktop application. The positioning of elements and bridge into application code is very fluid. I haven't looked into Java tools other than Swing which I had to use for school. The experience there is comparable to that of Windows Forms.

I'm sure C++ is immensely powerful for desktop applications, though I'm not a big fan of the development experience with C++. I also haven't put much time into learning it.

I have some experience with Python and Ruby. I think I'll look into the desktop app frameworks there. Do you have any suggestions?

I've been intrigued by Rust lately, as it's getting a lot of attention from the community. Your comment makes me want to dig deeper, specifically for this use case.

For C++, the biggest drawback is the mess that is the standard library.

For ruby, I don't have any serious answer because I haven't digged much into it.

For python, the most known are Tk, Kivy and the GTK+ bindings.

 
[deleted]

Except that I don't use github anymore, since I'm on Gitlab, and mainly focusing on backend development ;3

You created one GitHub repository on Nov 1 and pushed to it just yesterday.

School-purposed, we're forced to use Github. It's a yearly project, we're tasked with re-developing a game...

Schools are allowed to force pupils to use a commercial US service for their work? Eww.

 

And feeling the need to support all Win7 8.1 10, OSx, Linux... nah, I will pass 😕

Supporting the 5 major browsers Chrome Opera Firefox IE Safari for a web app seems much easier for me.

 

How is supporting five very different web browsers easier than supporting five different operating systems, given that you can use cross-platform libraries for both?

Given that any dll library needs an installer, and that can crash during installation. Or if a downloader like Adobe, internet connection might drops... the list goes forever.

I've done desktop apps developing. And the worst part is releasing and testing on various VMs, it's just ugly!

any dll library needs an installer

Not if they just reside in the application directory. On Windows, Qt software, for example, usually comes in a ZIP archive with a gazillion of qt-something DLLs. So do Electron "apps", by the way. :-)

gazillion dlls

The user needs to download a fat app in 2 mins... and in case of a website, just opens it in a 10 secs max

so do electron

And have a sluggish app like popcorn or gitkraken, what's the point of having a native app then 😄

The user needs to download a fat app in 2 mins... and in case of a website

..., there still is a gazillion of JavaScript bloat to download and parse - including security implications, unlike on the desktop.

what's the point of having a native app then 😄

That's why you should not use Electron.

It's okay for js, though I hate it, but the user gets the product up and running in less than 10 seconds which is incredible.

That's why I think web assembly is something... similar efficiency with no JS!

the user gets the product up and running in less than 10 seconds which is incredible.

... after having downloaded multiple 100 MB of Electron stuff. Sigh!

Who mentioned electron, it's a shitty tech... I meant normal web app with js.

 

No. All the non-techy people I know pretty much don't use desktops/laptops anymore. Write your desktop app and nobody will care.

 

See, I pretty much don't use web applications. Why wouldn't you serve me but them?

For every one person who says that, there's probably 99 who don't care. I'll go for the 99. My web app doesn't need installing, can be shared with a link, works the same on any device. Or I could build a Windows app in C++ and waste my time. Mobile apps can be worth doing, but desktop apps feel like yesterday's news for all but a few things now.

My web app doesn't need installing, can be shared with a link, works the same on any device.

..., will break with new browser releases, will have you regularly keep your precious shitload of JavaScript libraries up-to-date if you care about major security problems, will probably be not usable by blind/visually impaired users because screenreaders can't do JavaScript too well, will always look and feel like alien (= non-native) software, artificially limits your freedom in terms of design and resource usage, ... :-)

You can write cross-platform applications in modern languages, including "mobile apps", by the way. They'll be native.

Yes you have to keep libraries updated, just like in desktop-land. How accessible is your desktop app? Can a screenreader deal with that? Every cross platform solution (what, Qt, Xamarin or something like that?) looks terrible compared to the web, which pretty much "just works". With no install. We obviously have a difference of opinion here, but the reality is your users are probably on a phone, and they probably won't want to install anything (e.g. dev.to is not a native desktop app. If that's all it was, it would not exist)

Yes you have to keep libraries updated, just like in desktop-land.

And unlike in desktop-land, spreading malware thanks to breached JavaScript on centralized websites is very common these days. You're basically putting your users in danger.

How accessible is your desktop app? Can a screenreader deal with that?

Yup.

Every cross platform solution (...) looks terrible compared to the web

Good cross-platform solutions use the native OS APIs, but I agree that Qt applications usually look like a unicorn had puked on your monitor.

With no install.

Have you tried writing portable software yet?

the reality is your users are probably on a phone

Which can perfectly be covered with Delphi, C#/Xamarin etc.

they probably won't want to install anything

According to my own experiences, your very target audience (let me call them "dumb users" for now :-)) very much will want to install anything. Heck, they even use a Facebook app which is not really more than a headless web browser with Facebook in it.

Xamarin looks hellish, keep it. Your comment about every web app putting "users in danger" is a ridiculous thing to say. Best get off this site eh?

Xamarin looks hellish, keep it.

No, thank you. Not a fan of .NET either.

Best get off this site eh?

I accept your defeat. This discussion ends here. Enjoy your backdoors.

Yes you have to keep libraries updated, just like in desktop-land. How accessible is your desktop app?

You both are talking different niches and hence it gets rather complicated to hear each other.

For to-do list, or even a nifty new code editor, I’d definitely go with the webapp, until it gets to MVP and I decide to support it. I would never sign a contract with a client to promise 10+ years of support of any webapp.

With the desktop application, it’s easy-peasy, there is still a windows 95 application, written by me back in 1995 in Delphi32 for some medical institute, running successfully on Win10. No way it could happen if I decided to go with anything else but native.

That said, my crypto-related stuff, like keys etc are kept in native C application and no shitty JS would ever get a chance to see my private keys. My code editors are vim and VSCode. And I am completely fine with my dev.to client being a headless web, because if it will be screwed up with the next frameworks update, I will simply remove it and forget about it’s existence.

Nowadays it is, unfortunately.

Yep, I agree. I don't think this trend is going to revert anytime soon, at least in home computing.

A friend of mine for example, totally non technical, has been telling me she wants to ditch her Macbook Pro because she doesn't know what to do with it. She bought it two or three years ago and now she uses it mainly to watch TV shows on Netflix :D Her plan is to replace it with an iPad and maybe a keyboard for when she has to type emails or invoices.

If you don't work with a computer most of the stuff you do is through a browser already.

I think the vision of the personal computer that Bill Gates talked about ages ago is being fulfilled by personal smartphones / tables, not by desktop computers. Instead of having a family PC people have personal devices and share things with each other. Nobody looks at old photos taken with the smartphone anyway :D

So, actually, there are not "less people who need actual computers" but "more people who use alternatives". I agree that you won't need a real computer for consuming YouTube, but typing on a touchscreen is a mess. I admit that not everyone wants to type stuff like e-mails.

But we're on DEV, we usually write a lot. :-)

So, actually, there are not "less people who need actual computers" but "more people who use alternatives".

They use alternatives because they don't need them apparently :-)
Keep in mind that most adults have had to deal with a computer in their lives, the massive adoption of smartphones and tablets is a little more than 10 years old, they haven't been around forever. If after 12 years people are happy to use them less, then we must ask ourselves why.

Microsoft has a successful line of portable computers that look like tables when the keyboard is detached.

Apple for example has gotten a lot of flack in the latest years because their focus has been almost completely on phones.

A lot of people are happy with phones or with giant phones with pens or with iPads with keyboards or other combinations. Other people are happy with desktops or laptops. There are a lot more options now and it's a good thing.

It's not like computers have disappeared. They are there, you can buy them, both Macs and PCs. It's just that the "glory days" (in my opinion) are over

Apple for example has gotten a lot of flack in the latest years because their focus has been almost completely on phones.

Apple also sells a good couple of MacBooks though. Although I'm sure that macOS servers usually won't run from phones or laptops...

A lot of people are happy with phones or with giant phones with pens or with iPads with keyboards or other combinations. Other people are happy with desktops or laptops.

I have not said otherwise. But ignoring the second group looks wrong to me, especially since I'm a part of it. ;-) I guess that the tablet hype is over and they will fade into obscurity soon as "phones" grow bigger every six months and Microsoft's "tablets" are actually small convertibles.

Apple also sells a good couple of MacBooks though.

True, that's how powerful their brand is. They can change ports or ship shitty internal keyboards, people will complain for a while, but still buy the product :D

But ignoring the second group looks wrong to me

Agreed, but the second group is not totally ignored. You can still buy desktop apps for pretty much everything. See the App Store

I guess that the tablet hype is over and they will fade into obscurity soon as "phones" grow bigger every six months and Microsoft's "tablets" are actually small convertibles.

I hope they will not forever kill "smaller" phones, there's a limit on how phones can get big. I went to the Apple Store the other day and I can't use the iPhone XS Max with one one, to me that it's already too close to an iPad mini. I would be okay with the size of one of the other new phones but I've read about people complaining because phones are getting too big.

If I were an illustrator I would buy the new iPad pro in a heartbeat for example, but I'm not so it stays on the shelf :D

You can still buy desktop apps for pretty much everything.

Hasn't this discussion started with @ar10642 claiming that this was to be ended because "nobody needed that"? :-)

there's a limit on how phones can get big

Hmm. My first "smart" phone had four inches, my current one has six and I still wonder how I could live with the smaller one. I guess as long as it fits into my pockets, I'm fine. Luckily, I did not need a new one this year just yet.

people complaining because phones are getting too big.

Apple has been the one company that sticked with small screens for much longer than the competitors, so I can understand their overreaction now. I don't know whether I could use a 6.5" "phone" as my daily driver. I haven't tried yet. (But I haven't had an iPhone yet either. Hmm.)

Hasn't this discussion started with @ar10642 claiming that this was to be ended because "nobody needed that"? :-)

Well, "nobody" is probably a hyperbole but I guess in a few years he'll be right ;-)

I guess as long as it fits into my pockets, I'm fine.

That's the limit right there :-) My criteria for now is: can I use this with one hand and can I reach the top of the screen with my thumb?

But I haven't had an iPhone yet either. Hmm.

Well, there are plenty of non-iPhones with huge screens :D The new OnePlus 6T is 6.4"

I guess in a few years he'll be right ;-)

Or I will, claiming that pure tablets will be gone by then. Ha!

can I use this with one hand

I have never used mine with one hand, except for reading the time. I probably use it wrong. :-)

there are plenty of non-iPhones with huge screens :D

My OnePlus 5T - the last good OnePlus device - has 5.99" to be precise enough and I guess my next one may be an iPhone, given that good Android devices become more limited and more expensive every year anyway. But this might be a separate discussion.

I guess my next one may be an iPhone, given that good Android devices become more limited and more expensive every year anyway

Yeah, I think I'm going with an iPhone next. My current phone is a Nexus 5X with a 5.2" inch screen. Premium Androids are not that interesting anymore (maybe except the Google Pixel 3's camera) and I've only had bad experiences with Samsung phones.

But this might be a separate discussion.

yup

That's my point. Desktop is niche now, and for good reasons. If that's your niche, great. But the idea that the rest of us are overlooking something (presumably because we're stupid or something) is false.

Also, I doubt I understand how developers might ever consider iPhone and/or well-branded GAndroid. Are not we supposed to think about privacy and robustness more than about branding, are we?

I am buying Chinese flagships for $200 at most every year, immediately flash them with LineageOS and I could never be happy.

"The rest of you" are probably also in my "niche". You should not speak for everyone.

Are not we supposed to think about privacy and robustness more than about branding, are we?

And in terms of privacy and robustness, Apple's reputation is notably better than Google's as Google makes most of its money with "personalized advertising" and I know of no single Android device that gets official updates five years after its release.

Apple's reputation is notably better than Google's

Correction: Apple pays more attention to that particular aspect and Apple’s lawyers are better trained for this particular aspect.

I know of no single Android device

You don’t hear me. LineageOS. Official updates, including critical ones every week, forever. I tested it on my HTC One, 7 years old. LineageOS based on Android 7 was flashed flawlessly in 10 mins.

Apple pays more attention to that particular aspect

And iOS has been found relatively safe when confronted with the desires of law enforcement.

You don’t hear me. LineageOS.

You don't hear me. LineageOS will void your warranty on most Android devices, it is not an officially supported system on most Android devices. Those which "support" it (OnePlus does it, for example) will still be out of service after a year or two.

Show me one Android device with software updates from its vendor that was made in 2013 and did not make you void your warranty to achieve that.

Show me [...]

Why would I show you anything? Why would I need a warranty if for my whole life I never used it for mobile? I can do the math and void warranty costs nothing (unless your phone manufacturer throttles and makes other nasty things or unless I must use 1Oyo devices.)

Do you need a warranty? Fine. It does not save you a dime, but if you need it, continue feeding Apple and G. No issue.

Well if you change a phone every 12 months and you get lucky then you might never need a warranty yeah.

But other people might need it :D

But other people might need it :D

Nope. Do the math yourself. Buying new phone when the old one gets throttled (let me guess: the latter is NOT a warranty case) is still cheaper in the average than paying your privacy for it.

Even if a phone gets once broken (and this is a warranty case, which is the extremely rare one,) it’s still cheaper to buy the new one instead of overpaying for the warranty for the whole life. Otherwise all the insurance companies would get bankrupt.

The thing is the health insurance makes sense because one usually cannot afford the required surgery. You pay for your patience. The phone is not something one cannot afford. Do the math, it always helps to make decisions.

Even if a phone gets once broken (...) it’s still cheaper to buy the new one

I wish I had your income.

Premium phones are north of 700€ right now, repairs don't usually cost as much. Also most people buy them with subscriptions so they aren't actually shelling the whole phone price up front.

Probably your math holds up with cheaper phones but still, regular people are not going to flash their own phones anytime soon so I feel this argument is a little pointless :-)

I wish I had your income.

If you were reading what I say, before throwing your arguments out, you might have noticed: I entered the thread with mentioning no-names.

Somewhat like this (I clicked the first item in DuckDuckGo search results.

Mine is slightly more expensive, for dual camera, 128G and 8 cores, but it’s still under $300.

Yes, I can afford this once when the phone gets broken by a warranty case (once per our life, actually, in average.)

This is the first link I found at DuckDuckGo that sells phones. BTW, I bought last four of my phones there.

Why would I show you anything?

You claimed that I was wrong. Now you admit that I was right because you misunderstood me. All is fine now. :-)

Do you need a warranty?

I needed one once and I was happy to have one. I'd like to be relatively sure that a device that costs me half a month's worth of money will theoretically be supported until I voluntarily replace it. Even CyanogenMod can't do that.

It does not save you a dime, but if you need it, continue feeding Apple and G.

I fail to understand your relatively rude tone now. Did I hurt you?

Now you admit that I was right because you misunderstood me.
I fail to understand your relatively rude tone now. Did I hurt you?

I fail to understand both how were you right and how my tone is rude.

how were you right

That no Android device has a warranty for officially supported OS updates even remotely as long as iPhones do.

how my tone is rude

I guessed so.

In the past 20 years I have only worked in companies that don't allow you to install any desktop apps (other than the one or two vendors all large corporates use but totally crippled). The current one I am contracting at has 200k people on over 70 jurisdictions and the desktop app is dead to them as unmanageable legacy they are trying to remove. Then there are all the startups and unicorns going web and mobile. So totally desktop is completely niche and has nothing to do in large corporate where it is banned and nothing to do with direct to consumer or mobile. If its massive in your ecology and seems like the universe then more power to you. Yet its been irrelevant for the corporations I have been in for 20 years and is irrelevant for the mobile first start ups.

 

I'd say this is particularly important in certain environments where this efficiency is really needed. That would include a lot of stuff from gaming to manufacturing.

That's not to say you can't leverage both desktop and web applications. For example, a lot of the new stuff I'm working on (when not stuck in legacy town) uses web services for a lot of things but when I need to work with barcode readers, PLCs or scales, it has to be a desktop app running the show.

 

I'd say this is particularly important in certain environments where this efficiency is really needed.

I guess the difference between us that I think that efficiency is always important. Wasting your resources for inefficient software will degrade your computer performance, kill more forests because of the additional energy needed ;-) and, even worse, make you wait. A computer is a tool. Inefficient tools need to be replaced by more efficient tools until you can't notice a difference anymore.

 

Yeah, it is definitely sad.
But desktops are overpowered.
When you can run games/creative, Slack et al can afford the ridiculousness of, say, Electron.

Mobile apps though? On a handheld battery?

 

What's your take on universal windows platform apps regarding them as a desktop solution?

 

I'm not really keen on the design of UWP applications on devices without a touchscreen.

 

Web components are a huge advancement in the web platform, but most devs hadn't heard of them.

 

Do you have any recommended reading and tools to dive into this over the weekend? Thanks!

React is Tomorrow's MooTools

Scathing!

 

recommended reading

WELL...
There is this blog series everyone's talking about 😅

MDN is also amazing

developer.mozilla.org/en-US/docs/W...

Scathing!

Lol, I was going to write "jQuery" but i thought that wouldn't write capture the essence of the problem 😉

 

How would you respond to push back? (Mostly from the React community from what I've seen)

 

In my humble opinion, the react community is too heavily invested in their library. I can understand that, given the runaway success of their library, but I do think the bubble will eventually burst. The wise developer will begin to sharpen their custom-elements-fu and should consider them for their next project.

React vs. Web Components is a False Dichotomy.

Since web components are browser standards, they are as usable within react components as divs are. There are some minor caveats surrounding custom events, due to the odd way that react works with the DOM, but there's a well-trodden cowpath for working around react's eccentricities on that front. Preact, by the way, largely mitigates those caveats.
Although it's my opinion that web components are technically superior to React components because they are natively supported by the web browser instead of requiring developers to fight the browser, there is actually no contradiction between the two.

React is Tomorrow's MooTools

React is quite popular today, it's true, but that might not always be the case. <span> isn't going anywhere, neither is querySelector, but we've seen plenty of library frameworks fall to the wayside. In the mean time, web components have gained traction in the enterprise world due to their obvious future-proofing benefits, and interoperability between browsers and libraries.

Today, Web Components are Widely Supported

Now that Firefox supports Shadow DOM and Custom Elements, and the Edge team has announced their intent to ship, the web component standards have truly arrived, and are a compelling feature of the platform. I don't think it's a coincidence that we've seen a lot of shade thrown on WC's on social media this past month. Now that the standards have landed it's a much more looming threat to all-js component models.

The FUD Around WC's is Unjustified

A lot of the react-world arguments against web components boil down to some variation on

  • The standards aren't accepted
  • They are hard to work with
  • They can't do what react does

But this is simply not true. The now-deprecated v0 standards are no longer supported, they've been replaced with the v1 standard, which as we've seen is widely supported.
While it's true that the low-level APIs described by the standards can be cumbersome, libraries and base classes like hybridsjs or lit-element smooth over those bumps with only a tiny addition to js page load sizes.
As far as features, web component libraries can do everything react can do and more without the VDOM overhead or the cognitive and tooling complexity added by that abstraction - Web component dev tools are browser/dom dev tools.

An Anecdote

I have a friend at a browser vendor. A few years back, his team was busy building browser UIs and features using react.js. Even as he praised the elegance of the one-way-data-flow-with-central-store architecture (now easily implemented with custom element base classes like GluonElement or LitElement and state containers like redux etc), he complained about the performance limits of the React JS library (his words). I suggested he check out web components, since with them the performance limits would be the browser itself, rather than a JS library. He shot off an IM to a coworker. It's a few years later and lo and behold, that same browser vendor is currently in the process of re-writing their UI components with their own web-component-based library.

Summary

React brought a lot of wonderful things to the web development community.

  • A Functional approach to UI
  • One-way-data-flow patterns
  • Popularizing the component model

But it also brought a lot of baggage with it.

  • FUD around working directly with the DOM
  • Cumbersome and unnecessary tooling
  • The popular misconception that react is the only way to do component-based UIs on the web

Today, you can factor a modular, component-based front-end app without any browser flags, build steps, bundling, or tooling other than the browser and a text editor. And it will run on all the major browsers.

It's clear to me that the future will be built on open standards rather than bespoke implementations. However much good React has done for the web community (and I hope I clearly recognized that good), it won't be able to compete with that.

 

I'd say there's really no reason for the bad blood, and frankly, to me it feels immature at times and ill-informed. You can still use WCs in your framework. Take a look at this: custom-elements-everywhere.com for example.

Another point: Say I'm developing something with Vue, and I want to use a React component that I remembered because I used it in a different project, you'd have to hope there's a Vue version of that component, or roll your own. A web component you'd just plug and play, no matter the framework.

If you want to use your framework because of whatever reason, you can still leverage web components. Or not. Whichever is fine. You do you.

Additionally; Standards tend to outlive frameworks.

 

Lack of hard system limitations.
What? The advancement in storage, memory, network and CPU performance result in people creating unoptimized and bloated software. Wasting resources left and right. Usual excuse: there are plenty resources available (when you only run my software). Or people should simply upgrade their 3 year old device.
Just because I have a powerful system does not mean you can just consume resources as you see fit. Just because you can doesn't mean you should.
I don't mean you should optimize. Just keep the waste down. Electron is a good example of a wasteful stack for simple applications. You wouldn't use Eclipse's RCE for a chat application either.

 

Programming with pure functions, sometimes known as Functional Programming. All that mathy stuff associated with FP is pretty cool for expressibility and reuse, but it pales in comparison to the value of just using pure functions for as much of the code as is reasonable. With pure functions testing is easy and refactoring becomes very low risk. (Thinking typed FP... not as familiar with untyped.)

This extends to the front-end as well. The Elm Architecture has really taught me a lot in this regard. We have done epic refactors of our code base, fixing early mistakes. And because Elm code is pure, it was a bit of work, but it wasn't risky.

Writing pure functions is an investment in the code base, but it returns big over time.

 

Writing pure functions is an investment in the code base, but it returns big over time.

Is it possible that the average dev shop is just too short sighted to really buy into FP?

 

I don’t think it is short-sightedness as much as inertia. Even if you have felt the benefits first hand, writing pure functions can be really difficult with the tools/languages devs generally use. Most languages expect mutation as a foundational principle. Every line of code is expected to be a side effect. It is going against the grain to do otherwise. And the reason most of our tools are like this is just the happenstance of history’s unfolding.

So then once you resolve to use tools which normalize and expect pure functions, you then immediately have another crisis. You have no idea how to solve problems with pure functions. It’s just different at times.

So I think it is only natural that these difficulties prevent people from giving it a try. I only started to discover the benefits myself pretty recently in my career (6 years ago?). And it wasn’t until even more recently that I began to be able to articulate specifically how it helps.

Fortunately a lot of languages have incorporated functional features. So that helps toward the familiarity of solving problems functionally. For example C# LINQ is a significantly liked feature that is basically lifted straight from FP.

Anyway, i just think it’s hard to do in most of our tools. And changing tools plus learning different ways to solve common problems is too much change at once for most of our teams. It took me multiple tries. Maybe as our tools start to incorporate more FP ideas, as they seem to be doing, the barrier will get smaller.

 

Polyglotism. Systems thinking. Art of simplicity. Post capitalism. User empathy.

 

Moral Responsibility; the counter point of the 'because we can' with the question of 'should we'. Software Engineers have a responsibility to the general public regarding how our creations are used. Like any other tool in history software can do good, improve lives, help the disadvantaged. But i can also be used for ill-will and nefarious reasons. What is our responsibility as creators to the public?

 

PWA and WebAssembly are two killer techs... but, people still prefer frontpage-like solutions 😄

 

iOS needs to stop intentionally lagging in support of PWAs

 

It feels pretty intentional, doesn't it? I get that they want to keep people in the app store, but at this point it seems pretty hostile to their customers...and the web in general.

 

I hope so... but Apple is so greedy for their apple-store subscription 🤬

 
 
 

It will allow you to write JavaScript in order to make CSS more powerful -- it should also make it so that browser compatibility isn't an issue anymore. Here's more -- some features have started rolling out especially in Chrome's Canary and FireFox's Nightly

 
 

I've heard about it on fun fun function. Haven't yet looked into it.

 

Ali it would be great to see a post from you about this technology.

 

What is the most underrated movement that could have a real affect on software?

Ethics in CS curricula

What are the majority not thinking enough about?

The implications of facial recognition software applied to a massive scale :)

 

Live programming. Devs are stuck in a code-run-debug-code cycle, but it doesn't have to be this way. What if you could see the values of your variables while you program? Once you try it you realize just how slow normal programming is.

There's some very exciting work going on in this area - look at lighttable / quokka / wolf / algojammer / FoxDot.

I'm the creator of AREPL, a vscode extension for live programming in python. I'm convinced that live programming will be a big thing. It may not be my extension, or any of the things I listed, but eventually live programming will become popular, not just a niche theoretical concept.

 

Accessability. Time and again this one little thing is overlooked.
Raise your game; get your a11y on.

 

An ability to have AST on hand. LISP and Erlang/Elixir do that.
It is 100 times cleaner, faster and easier to maintain than even Ruby metaprogramming, not to mention the inability to write the code efficiently in such languages as basic/python/js/go.

 

Recent pattern I've noticed that JS developers overlook languages like Elm on the basis: "another language that compiles to JS". So they don't even give it a fare try.

But that argument is no longer valid because JS (es6+) itself compiles to JS(older js).

 

Security. Most devs couldn't care less about the security of the applications they develop. SQL straight to the database? Hold my beer.
Sending strings with shell commands and allowing arbitrary code execution? Can't see where this should go wrong.

 

Crikey, this is a deep dark well of a topic!

In no particular order...

Engineering. Software engineering as a profession has a long way to go to be on par with other engineering professions. Not just standardization of the language, but standardization of the profession, in the same sense of standardized railroad tracks, or standardized nuts-and-bolts.

Paradigm. Procedural programming (e.g., C, COBOL, Pascal) have given way to object-oriented programming (e.g., C++, JavaScript, and to a lesser extent Object Pascal / Delphi / Oxygene / Freescal, Objective-C, Swift). I think the next wave of programming paradigms will be an explosion of functional programming (e.g., Elm, Clojure, OCaml, F#, Haskell) and domain specific languages (e.g., JetBrains MPS).

Environment. Cloud based development will change how we work, as developers. By that, I mean using an editor like Microsoft Visual Studio Code, for a project that lives in the cloud, like Microsoft GitHub, and is compiled by a data center, like Microsoft Visual Studio Online. Not necessarily for cloud-based projects, but for everything. Projects will probably not be files like they currently exist, with toolchains that transform code to executables -- rather I imagine projects will be things that exist in the cloud, which are accessed and possibly shared collaboratively. (Not sure if that moves society closer to Richard Stallman's vision, or away from it.)

Tooling. Bret Victor is a visionary when it comes to where we are at versus where we could be in terms of tools and presentations for developers and end-users. I can only imagine our industry will get much better at this, since there is so much potential there.

Languages. I don't expect there to ever be a "perfect language", since programming languages are tools which for a given job will be more suitable, or less, than other languages. So I expect programming languages will continue to evolve dramatically, and as they do so there will be a groundswell impact on all development.

Mitigation. Bugs have been something that has plagued our industry ever since a moth was found in a relay. Tooling around static analysis, and the intersection of several of the points above, and possibly artificial intelligence, will greatly reduce our ability to create bugs. At some point knowing how to fix "bugs" in a project will not be synonymous with "job security". (Can you remember the last time you could by 5.25" diskettes at your favorite office supply store? Likewise, the DOH! kind of bugs will be something you can't do; for one category of bugs, the language won't let you make them, for another category of bugs, the tools will detect them. Not just a daydream, Coverity is just such a tool, albeit expensive, which does wholistic static analysis. Those kinds of tools will become faster, more powerful, and cheaper.)

 

keyboard skills. Think of piano where you practice your scales. You don't make people practice their hotkeys and ability to navigate the computer without thinking.

I see people struggle with indent based languages because when they code its as if they are wearing mitts

 

Flutter - my bet is that if this Fuchsia OS blows up, apps will be mainly written in flutter

 
 

According to some tech blogs I've came accross, Flutter is google's response to React Native. I'm currently enjoying learning flutter and building UIs with it.

As a crossplatform solution though it would have to be really amazing to beat existing solutions i.e. react native, nativescript, ionic, xamarin etc. Currently one of the most interesting thing about Flutter is its hot reload feature during dev. Downsides being currently the small (but growing) community & available plugins.

I got this crazy idea when I typed flutter on my terminal but not including any options or arguments. I saw on the list of available commands that fuchsia_reload is also listed.

What does this mean?

Apps built with flutter for Android + IOS will also run on Fuchsia!

Now I haven't dug deep enough to verify my claim but Google would have played their cards right if it were true.

Fuchsia is this not publicly disclosed but public anyway OS by google that apparently runs on anything. Wikipedia says "Fuchsia's user interface and apps are written with Flutter" which by the way is awesome because I read this after I made my guess. Fun read on fuchsia

So Flutter early adopters stand a chance of just running a build command and deploying to Fuchsia (once its a thing) other than learning a new codebase all together.

 

That CPUs have reached a limit to how much speed they can reach.

Now it's all about core count and parallelism. Languages that excel in that front will give tech companies an implicit edge.

For example, elixir.

 

I’m not missing the trend of “sticking with the tools I know and expanding my capabilities”. 😇 On the other tentacle, I made my first class in Python last week. 😎 Seems like everything in software is hard until I do it (successfully) and then it’s a standard part of my toolkit.

 

Not sure it’s a current trend, but... server side rendering.

 

People have come to expect client side functionality. If every little steps requires a full page reload you add friction to their usage and once it adds up enough they will get fed up and leave.

 

Not when server rendering is done in such a way as to be nearly indisguishable from SPA... providing a high fidelity experience that delights users. It can be done.

 

This is a common misconception! Technologies like PJAX mean that you don’t need full page reloads to do server-side rendering.

 

SAT/SMT solvers are magic. I'm certain future software systems will have more solvers and theorem provers. For a good example I recommend reading a paper by Nuno P. Lopes and John Regehr: Future Directions for Optimizing Compilers.

 

Containers and container orchestration wasn't mentioned here (maybe the movement is over?) but it is changing the way apps are developed, tested, and deployed across the board.

Currently containers are focused on server deployments but, I believe, it is not a far stretch of the imagination to see containerized applications running on client machines as a deployment option. This can help remove the dichotomy between web and native desktop applications while giving control back to the end user for things like performance and system usage.

On Windows it is also removing the need to rewrite applications targeted at other operating systems and bridging the gap of tools and applications available to all developers.

 

Containers and container orchestration wasn't mentioned here (maybe the movement is over?) but it is changing the way apps are developed, tested, and deployed across the board.

I wouldn't call it an overlooked example though :D Containers are talked about everywhere. I'm almost "tired" of hearing about Docker and k8s :P

it is not a far stretch of the imagination to see containerized applications running on client machines as a deployment option

Really interesting, didn't think about this. The only issue I see is that containerized desktop apps will always look foreign to the system if run in a different OS but you made me think about a couple of possible advantages:

  • sandboxing and security (you already have sandboxing in modern OS through virtualization)
  • running old apps that are not supported by the host OS (but again, isn't this already accomplished by virtualization?)

What do you think?

 

The creation of voice apps for Google Home and Amazon Alexa devices.

Due to the increase rise of podcast popularity, the amount of voice devices flying off the shelves that just started 2-3 years ago and the ecosystem surrounding them backed by Google and Amazon.

 
 

I can tell you that I'm most overlooking blockchain, mostly due to it's applications in cryptocurrency and my level of disinterest in cryptocurrencies.

 

there's a reason blockchain is overlooked. and it seems you've found it already.

 

Commenting code - say WHY, not HOW or WHAT. Use a doc module, like jsdoc or compodocs react-docgen etc.

 
 

GraphQL is pretty hot right now. I'd say the issue is the opposite - people choosing GraphQL for simple projects where REST would be better.

Classic DEV Post from Jul 26

🎩 JavaScript Enhanced Scss mixins! 🎩 concepts explained

Ben Halpern profile image
A Canadian software developer who thinks he’s funny.