1. 35

I’ll bite.

General industry trends
• (5 years) Ready VC will dry up, advertising revenue will bottomout, and companies will have to tighten their belts, disgorging legions of middlingly-skilled developers onto the market–salaries will plummet.
• (10 years) There will be a loud and messy legal discrimination case ruling in favor of protecting political beliefs and out-of-work activities (probably defending some skinhead). This will accelerate an avalanche of HR drama. People not from the American coasts will continue business as usual.
• (10 years) There will be at least two major unions for software engineers with proper collective bargaining.
• (10 years) Increasingly, we’ll see more “coop” teams. The average size will be about half of what it is today, organized around smaller and more cohesive business ideas. These teams will have equal ownership in the profits of their projects.
Education
• (5 years) All schools will have some form of programming taught. Most will be garbage.
• (10 years) Workforce starts getting hit with students who grew up on touchscreens and walled gardens. They are worse at programming than the folks that came before them. They are also more pleasant to work with, when they’re not looking at their phones.
• (10 years) Some schools will ban social media and communications devices to promote classroom focus.
• (15 years) There will be a serious retrospective analysis in an academic journal pointing out that web development was almost deliberately constructed to make teaching it as a craft as hard as possible.
Networking
• (5 years) Mesh networks still don’t matter. :(
• (10 years) Mesh networks matter, but are a great way to get in trouble with the government.
• (10 years) IPv6 still isn’t rolled out properly.
• (15 years) It is impossible to host your own server on the “public” internet unless you’re a business.
Devops
• (5 years) Security, cost, and regulatory concerns are going to move people back towards running their own hardware.
• (10 years) Containers will be stuck in Big Enterprise, and everybody else will realize they were a mistake made to compensate for unskilled developers.
• (15 years) There will still be work available for legacy Rails applications.
Hardware
• (5 years) Alternative battery and PCB techniques allow for more flexible electronics. This initially only shows up in toys, later spreads to fashion. Limited use otherwise.
• (5 years) VR fails to revitalize the wounded videocard market. Videocard manufacturers are on permanent decline due to pathologies of selling to the cryptobutts folks at expense of building reliable customer base. Gamers have decided graphics are Good Enough, and don’t pay for new gear.
• (10 years) No significant changes in core count or clock speed will be practical, focus will be shifted instead to power consumption, heat dissipation, and DRM. Chipmakers slash R&D budgets in favor of legal team sizes, since that’s what actually ensures income.

~

I’ve got other fun ones, but that’s a good start I think.

1. 7

(5 years) Security, cost, and regulatory concerns are going to move people back towards running their own hardware.

As of today, public cloud is actually solving several (and way more than people running their own hardware) of these issues.

(10 years) Containers will be stuck in Big Enterprise, and everybody else will realize they were a mistake made to compensate for unskilled developers.

Containers are actually solving some real problems, several of them already were independently solved, but containers bring a more cohesive solution.

1. 1

Containers are actually solving some real problems, several of them already were independently solved, but containers bring a more cohesive solution.

I am interested, could you elaborate?

1. 1

The two main ones that I often mention in favor of containers (trying to stay concise):

• Isolation: We previously had VMs on a virtualization level but they’re heavy, potentially slow to boot and obscure (try to launch xen and manage vms your pet server), and jail/chroot are way harder to setup and specific to each of your application and do not allow you to restrict resources (to my knowledge).
• Standard interface: Very useful for orchestration as an example, several tool existed to deploy applications with an orchestrator, but it was mostly executables and suffered from the lack of isolation. Statically compiling solved some of theses issues, but not every application can be.

Containers are a solution to some problems but not the solution to everything. I just think that wishing they weren’t there, probably means the interlocutor didn’t understand the benefits of it.

1. 1

I just think that wishing they weren’t there, probably means the interlocutor didn’t understand the benefits of it.

I’ve been using FreeBSD jails since 2000, and Solaris zones since Solaris 10, circa 2005. I’ve been writing alternative front-ends for containers in Linux. I think I understand containers and their benefits pretty well.

That doesn’t mean I don’t think docker, and kubernetes, and all the “modern” stuff are not a steaming pile, both the idea and especially the implementation.

There is nothing wrong with container technology, containers are great. But there is something fundamentally wrong with the way software is deployed today, using containers.

1. 1

But there is something fundamentally wrong with the way software is deployed today, using containers.

Can you elaborate? Do you have resources to share on that? I feel a comment on Lobsters might a be a bit light to explain such a statement.

2. 1

You can actually set resource isolation on various levels; classic Unix quotas, priorities (“nice” in sh) and setrusage() (“ulimit” in sh); Linux cgroups etc. (which is what Docker uses, IIUC); and/or more-specific solutions such as java -Xmx […].

1. 2

So you have to use X different tools and syntax to, set the CPU/RAM/IO/… limits, and why using cgroups when you can have cgroups + other features using containers? I mean, your answer is correct but in reality, it’s deeply annoying to work with these at large scale.

1. 4

Eh, I’m a pretty decent old-school sysadmin, and Docker isn’t what I’d consider stable. (Or supported on OpenBSD.) I think this is more of a choose-your-own-pain case.

1. 3

I really feel this debate is exactly like debates about programming languages. It all depends of your use-cases and experience with each technologies!

1. 2

I’ll second that. We use Docker for some internal stuff and it’s not very stable in my experience.

1. 1

If you have <10 applications to run for decades, don’t use Docker. If you have +100 applications to launch and update regularly, or at scale, you often don’t care if 1 or 2 containers die sometimes. You just restart them and it’s almost expected that you won’t reach 100% stability.

1. 1

I’m not sure I buy that.

Out testing infrastructure uses docker containers. I don’t think we’re doing anything unusual, but we still run into problems once or twice a week that require somebody to “sudo killall docker” because it’s completely hung up and unresponsive.

1. 1

We run at $job thousands of container everyday and it’s very uncommon to have containers crashing because of Docker. 2. 1 Easier local development is a big one - developers being able to quickly bring up a full stack of services on their machines. In a world of many services this can be really valuable - you don’t want to be mocking out interfaces if you can avoid it, and better still is calling out to the same code that’s going to be running in production. Another is the fact that the container that’s built by your build system after your tests pass is exactly what runs in production. 3. 1 The argument about containers that you’re disagreeing with already has a retort for you 4. 7 (5 years) VR fails to revitalize the wounded videocard market. Videocard manufacturers are on permanent decline due to pathologies of selling to the cryptobutts folks at expense of building reliable customer base. Gamers have decided graphics are Good Enough, and don’t pay for new gear. While I might accept that VR may fail, I don’t think video card companies are reliant on VR succeeding. They have autonomous cars and machine learning to look forward to. 1. 2 (10 years) No significant changes in core count or clock speed will be practical, focus will be shifted instead to power consumption, heat dissipation, and DRM. Chipmakers slash R&D budgets in favor of legal team sizes, since that’s what actually ensures income. This trend also supports a shift away from scripting languages towards Rust, Go, etc. A focus on hardware extensions (eg deep learning hardware) goes with it. 1. 1 (10 years) Containers will be stuck in Big Enterprise, and everybody else will realize they were a mistake made to compensate for unskilled developers. One can dream! 1. 2 Would you (or anyone) be able to help me understand this point please? My current job uses containers heavily, and previously I’ve used Solaris Zones and FreeBSD jails. What I see is that developers are able to very closely emulate the deployment environment in development, and don’t have to do “cross platform” tricks just to get a desktop that isn’t running their server OS. I see that particular “skill” as unnecessary unless the software being cross-platform is truly a business goal. 1. 1 I think Jessie Frazelle perfectly answer to this concern here: https://blog.jessfraz.com/post/containers-zones-jails-vms/ P.S.: I have the same question to people that are against containers… 2. 1 (5 years) Mesh networks still don’t matter. :( (10 years) Mesh networks matter, but are a great way to get in trouble with the government. Serious attempts at mesh networks basically don’t exist since the 200#s when everyone discovered it’s way easier to deploy an overlay net on top of Comcast instead of making mid-distance hops with RONJA/etc. It would be so cool to build a hybrid USPS/UPS/Fedex batch + local realtime link powered national scale network capable of, say, 100mB per user per day, with ~ 3 day max latency. All attempts I’ve found are either very small scale, or just boil down to sending encrypted packets over Comcast. 1. 1 Everyone’s definition of mesh different, but today there are many serious mesh networks, the main ones being Freifunk and Guifi 2. 1 (10 years) There will be at least two major unions for software engineers with proper collective bargaining. What leads you to this conclusion? From what I hear, it’s rather the opposite trend, not only in the software industry… (5 years) All schools will have some form of programming taught. Most will be garbage. …especially if this is taken into account, I’d argue. (10 years) Some schools will ban social media and communications devices to promote classroom focus. Aren’t these already banned from schools? Or are you talking about general bans? 1. 1 I like the container one, I also don’t see the point 1. 1 It’s really easy to see what state a container is in because you can read a 200 line text file and see that it’s just alpine linux with X Y Z installed and this config changed. On a VM it’s next to impossible to see what has been changed since it was installed. 1. 3 ate a container is in because you can read a 200 line text file and see that it’s just alpine linux with X Y Z in I just check the puppet manifest 1. 2 It’s still possible to change other things outside of that config. With a container having almost no persistent memory if you change something outside of the dockerfile it will be blown away soon. 2. 1 Containers wont be needed because unikernels. 3. 1 All schools will have some form of programming taught. Most will be garbage. and will therefore be highly desirable hires to full stack shops. 1. 1 I would add the bottom falling out of the PC market, making PCs more expensive as gamers and enterprise, the entire reason why it still maintains economies of scale, just don’t buy new HW anymore. 1. 1 I used to always buy PCs, but indeed the last 5 years I haven’t used a desktop PC. 1. 1 If it does happen, It’ll probably affect laptops as well, but desktops especially. 2. 1 (5 years) All schools will have some form of programming taught. Most will be garbage. My prediction: Whether the programming language is garbage or not, provided some reasonable amount of time is spent on these courses we will see a general improvement in the logical thinking and deductive reasoning skills of those students. (at least, I hope so) 1. 5 I like s-q-l but I hear sequel a lot more 1. 2 In my university, and at school, (Germany) I’ve never heard anyone say sequel, only SQL. Probably because it is interpreted as an acronym. 1. 1 In real world office talk, always s-q-l but in academics, “sequel”. I think there is a pattern here. Some acronyms are meant to be pronounceable but I don’t think that’s SQL’s case. 1. 1 The guy’s confusion in the comments is exactly what I’m encountering. Clearly, \bar{f} is computable, so it should belong in set A (in fact, it should be included by the “infinite function generator”). I’m not sure how this post proves anything. I want to understand ;_; 1. 2 So I think there is a sneaky self-referential bit in there because$ \bar{f}$’s form depends on the input. The form of the input informs the computation. The form of the proof is a bit like the “Say P is the largest prime” and then you go on to show, “but wait, if it was, how can I pull this other, bigger, prime out of my back pocket?!” Here we start by saying here’s a table of all the possible functions in A and their input values. My table is infinite and I say I have all possible functions in it. But then you come in and pull out$\bar{f}$from your back pocket and say “Is that SO?! Then explain THIS!” and it turns out for some given input$\bar{f}\$ is guaranteed to give a different output than ANY function in my INFINITE table, so POOF, it must mean my infinite table is not enough.

1. 1

I guess that is the problem I am having. I knew it was self-referential, but…to me, infinity is also somewhat self-referential.

It is really hard for me to describe it. But, lets say I define an infinity that is the sum of all natural numbers.

Lets say our “infinity” stopped (I know this is not right to say…) at 3. 1 + 2 = 3. Now lets go 1 step forward. 1 + 2 + 3 = 6. 3, the previous definition of infinite sum, is now part of the sequence.

This is kind of how I see this example.

Basically this guy’s table T would be double the size, but really, that’s how it should have always been.

1. 0

I’m always on the lookout for how I can win my kids’ cooperation in novel and fun ways. Bonus points if it involves getting to tinker on an engineering project myself.

So “engineering” basically means nothing now.

1. 2

Gotta make yourself feel good some how.

I like to go by “Software creationist” these days. Separates me from everyone else.

/s

1. 3

Haha, very cool.

I just skipped to the end to see what their conclusion was:

The major conclusion of the study is that of the three honing methods studied, the best method for removing thebur and setting the edge angle is clearly a final polish on leather loaded with a polishingcompound such as the chromium oxide or diamond compounds used here.

1. 1

I’m in this person’s shoes as well. Everything they say is pretty much spot on.

Engage in group conversations in slack, make sure there is a #random channel or similar for “watercooler talk”.

Take a trip once or twice a year to the head office, and organize a group outing.

1. 2

Is IMAP considered the “cleanest” implementation of email possible?

1. 3

No, but JMAP probably is.

IMAP is like a filesystem with poor performance and doesn’t allow batching of commands

1. 1

FWIW IMAP also seems to have its own host of layers of cruft

1. 3

Allows me to easily create binary based formats and write tail/head unix-like programs. I use this for a couple personal services and saves me tons of space and is very efficient. I write data every second. Using tools like gzip, fswatch, parallel, and others, I can compress my data and manipulated in parallel with ease.

1. 1

As software people, maybe we need to stop relying on ever-more-complex OoO hardware to make our code faster over time, and design software that can run optimally on simpler in-order CPUs instead.

I’ve had this idea for awhile now. Revert to simple CPUs. The raspberry pi is more than enough performance for all common day needs, and even most work. I’ve written Z80 software and it amazes me what you can do with less than 1 megabyte of RAM and a few dozen megabytes of storage. When I see processors with Ghz speed, it blows my mind, because how can we write such functional software at 4Mhz on a Z80, and still not accomplish the same magnitudes higher? It is just amazing. I was thinking of using RISC OS as my casual driver, but the one thing stopping me is support. You are essentially all alone out there.

If you need the big guns, then you outsource your computations to an in-house compute server or external one.

The only issue I see, is gaming. Resource intensive, and requires external rendering hardware. I can’t imagine right now how you’d send out rendering tasks to a render or compute server and return them fast enough.

1. 5

Why discourage others from reading the paper?

Everyone: Read this paper! It’s well written and very accessible if you know the basics of how CPUs work.

1. 2

Yeah the paper isn’t that difficult to understand.

1. 1

1. 1

Doesn’t do anything on Windows 7 in these browsers:

IE 11.0.9600.18204

Chrome 54.0.2840.71 m

Firefox 49.0.2

Screenshot?

1. 1

Runs in Chrome 50 here on Debian. It is slightly interactive so a screenshot wouldn’t do it justice.

1. 1

D'oh. Well, I looked at the source images and it seems like it’s probably amusing.

1. 1

I just tried it on Chrome 54 on Windows 7. Works fine. It may be a scaling issue. Play with the body height attribute.

1. 5

Finishing unfinished projects, jumping around randomly and trying to make progress. Got a prototype of an X11 activity tracker working, managed to rewrite it in Vala (that was a pain), and now I should be working on storing the data in SQLite and adding a GTK+ GUI to display some stats, which is the sole reason why I bother with Vala in the first place.

1. 1

Keep us posted on the activity tracker!

1. 3

COBOL v2 baby. This looks interesting as a teaching resource.

1. 3

I don’t understand the attempt to make ‘natural english’ a programming language. It just ends up being verbose.

And I don’t think anybody had difficulty learning programming because the language is not english, when really it is just a subset of english and maths.

make x equal 12

x = 12

initialize the buttons

buttons.initialize()

add 2 to 4 and put the result in ‘number

number = 2 + 4

not to mention the fact that with a programming language, it’s far easier to teach it to a non-english speakers. If they had learned maths, they know what x = 1+2 probably means.

1. 2

Exactly. The reason programming is difficult isn’t because syntax is hard - it’s because humans are sloppy and don’t think like computers. English-like programming languages are just difficult to quickly parse (both for computers and humans).

1. 10

The Atreus. I love using it, I loved building it. I wish I could replace my laptop keyboard with the Atreus' column-staggered layout. The Atreus is small enough to take with me, but loud enough that I feel kind of awkward using it in a quiet coffee shop or on a plane.

1. 2

I’ve been telling myself over 3 years I’ll make one. Great to hear it works as well as it looks. To be honest though as a 5 year Dvorak typist the keyboard I use doesn’t matter much anymore.

1. 2

It’s really not so hard to make, you could finish it in a weekend. I’m a complete newb at soldering, so much so that I actually soldered the diodes and the mcu on the wrong side of the board at first. I had to remove the solder and then re-solder everything for it to fit in the case. That was messy, but even so, still works fine.

1. 3

At least you got a PCB one. When @technomancy first started selling them, I watched him solder a rats nest of wires together to ship out to someone. It looked like hell!

1. 3

I had a lot to say, so I just wrote my own article. I don’t think it deserves its own submission.

1. 13

I think the author buried the lede. ag is fast enough for anything I’ve thrown at it, this is the real reason to check out the tool:

ripgrep also implements full support for .gitignore, where as there are many bugs related to that functionality in The Silver Searcher. Of the things that don’t work in The Silver Searcher, ripgrep supports .gitignore priority (including in parent directories and sub-directories), whitelisting and recursive globs.

Just knowing that the author has used ag enough to know how annoying those bugs are is reason enough for me to pay attention.

1. 2

ag is more general than ripgrep, which is probably why there is a slight speed difference.

I like my generality unless I really, really need the speed. I think this is why GNU utils are still used a lot today (because they are versatile vs not built for one true single purpose, going against the UNIX philosophy a bit).

Good job for making a somewhat alternative to ag in Rust. Competition is always awesome to see. At least we can say ripgrep is not only fast for source code searching, but also memory safe?

1. 9

Would you mind if you elaborated on what you meant by ag being more general than ripgrep?

(There are absolutely some features in ag that aren’t in rg, but it goes both ways, and I don’t think any of them are of the galactic variety, but I could be missing something!)

which is probably why there is a slight speed difference

To be fair, my blog post was meant to stop speculation like this by providing both data and analysis that explains the speed difference.

At least we can say ripgrep is not only fast for source code searching, but also memory safe?

Sure, but the other selling point of ripgrep is that it’s not just for source code searching. You can search anything at faster-than-grep speeds. At least, that’s what I claim anyway!

And yes, of course, writing it in Rust was pure joy. <3

1. 1

ag can do binary searching, whereas ripgrep is utf-8 specific? Correct me if I’m wrong, please!

1. 2

rg is strictly superior here. rg can handle any ASCII-compatible encoding just fine (and will happily munch on pure binary data), just like ag. Additionally, rg has Unicode support. e.g., \w matches all Unicode word characters.

Could you help me understand where the confusion was? I’d like to fix whatever documentation led you to conclude this. :-)

1. 1

You tell me: a => a + 1

Looks pure to me

Where is my treat

1. 9

There’s way better information out there about music theory than this article. It seems to me like the only reason this got posted is that it’s eev.ee who’s almost every post gets posted on here for reasons I cannot understand.

A quick introduction to the physics if that’s all you’re interested in: Crash Course Physics on Music: https://www.youtube.com/watch?v=XDsk6tZX55g

A full music theory course from Yale: https://www.youtube.com/watch?v=5_yOVARO2Oc&list=PL9LXrs9vCXK56qtyK4qcqwHrbf0em_81r

1. 16

An article I can read in 5 minutes is a lot different than a 10 minute video or a full music theory course. I don’t think that an article has to be the absolute best authority on the subject to warrant posting to lobste.rs. I just took a look, and eev.ee posts have been submitted by a good number of different people.

I can’t speak for anyone else, but I enjoy most of Eevee’s posts. They’re generally about something interesting, written from a perspective that I can understand, and are about things I generally don’t think about, but are at least tangentially related to things I’m interested in.

1. 4

I think it’s because eevee writes about topics that intrigue devs who don’t go out of their way to look on the internet themselves.

I like his honesty at the end:

I’m going to forget all of this, throw notes around at random, and see what sounds good. Consensus seems to be that music is largely about handling contrast, just like anything else.

If you aren’t quite as ready to give up, here’s some stuff people linked to me while I was figuring this out in real time on Twitter.

Sounds like a little irrelevant brag or “excuse” for giving up there though (“figuring this out in real time on Twitter”).

1. 1

I brought this up about a year ago in #gbdev on efnet. Arbitrary execution of native code via a ROM is something I thought no one had thought about, but people definitely have. I tried creating a game boy ROM that would escape the “sandbox” of a particular one-off emulator someone wrote. Why? Because everyone writes game boy emulators as a hobby project (and NES ones too), so why would they care about security. This leaves a huge attack space for anyone wanting to try this.

So be wary of the emulator you install, and the ROMs you download.

1. 1

I find task scaffolding works particularly well because it captures the steps you had in mind, leaving no doubt where you need to continue.

// TODO

calculateAverageAgeOfCitizens(…);

// Still needs to be configured

plotSomeInterestingData(…);