1. 3

    Unfortunately a lot of these CSS-based tricks are pretty terrible in terms of accessibility. Granted, a lot of JS-heavy websites tend to be pretty poor when it comes to accessibility, but that’s largely a result of it being a low priority, rather than any technical limitations of JS-based web apps.

    1. 16

      The headline is a bit weird. The article is about “these apps are so popular, Apple went out of their way to ensure they still worked”. It’s not clear that the apps were buggy, except in the NSBundle unload case.

      1. 5

        To me it’s more accurate to say that Apple frameworks are buggy and older versions of those apps had to use workarounds and depend on the buggy behaviour until Apple decides to fix those bugs.

        I wouldn’t be surprised if Apple knew about some of the bugs from the developers of the apps during the beta period of a new OS. It doesn’t necessarily mean that Apple actively tests all of those apps as part of its OS QA routine.

        1. 4

          Yeah to me the article read like “Apple consider’s these apps important enough that they go to extra lengths to ensure OS updates don’t break them”. The title here seems weirdly judgey and negative.

      1. 1

        Why oh why did they have to call it “bionic”…were they trying to increase general nomenclature confusion?

        https://en.wikipedia.org/wiki/Bionic_%28software%29

        1. 4

          All the names that are actual words are already taken by someone somewhere. Naming something these days with a word is a guaranteed collision.

          1. 1

            See also Apple’s A11 Bionic processor (the one that’s in the iPhone X)

            1. -1

              Increasing general nomenclature confusion is kind of all the Ubuntu release code-names are good for, yes.

            1. 2

              This is the first April Fool’s thing I’ve seen that’s brought a sincere smile to my face, what a fun idea.

              1. 6

                Great article, the over-dependence on lodash in many modern JS codebases reminds me of sites back in the day which would import jQuery just so they could run code on DOMContentLoaded. Howere,

                if you really do need lodash, and there’s still plenty of good reasons to use it, I’d recommend using the lodash-es package,,which breaks lodash down into ES Modules. This means modern JS bundlers like webpack and rollup which are aware of ES modules can strip the unused parts of lodash from your production bundle.

                1. 6

                  I’m continuing to work away at that Lobsters iOS / Android app, and it’s getting to the point where I’d probably feel okay throwing it up on the App Store / Google Play as a free download for others to use. It really has a pretty limited use case though, since as far as I know Lobsters doesn’t have any way for third-party applications to authenticate users, limiting my app to being read-only.

                  I’ve also been learning Rust with the fantastic official docs, and Ive started porting a half-complete Swift Game Boy emulator I worked on years ago to Rust. It’s definitely taking me a while to wrap my head around lifetimes and borrow semantics, but I’m really enjoying the experience.

                  1. 1

                    Re Lobsters login, can you not simulate the regular login process with a library? And then use that session for posting?

                  1. 7

                    The repository pattern he describes here sounds very similar to how Elixir’s Ecto library works, which is one of the things I’ve historically really liked about Elixir / Phoenix over Ruby / Rails. It’s great to see those ideas gaining traction in the much larger Ruby community.

                    1. 4

                      If I move off of OS X, it will be to Windows. For what I use my machine for, the applications simply aren’t there on any Unix other than OS X.

                      1. 4

                        I’ve been using Linux as my main desktop since about 3 years and used all of the major desktop environments. KDE Plasma looks good but either its file indexer (baloo) is taking hostage of one CPU core or the desktop crashes if you type specific words or too fast in the launcher, in short a horrible experience. I used Gnome for about a year and it was not much better, the plugins/extensions are often buggy and especially under wayland it crashes often and can’t restart like on X11, i.e. you loose all of your session state. Additionally, it feels laggy even on a beefed out machine (6 cores, latest gen. AMD GPU) because the compositor is single-threaded. GDM, gnome’s display manager, is also sluggish, runs since gnome 3.26 a process for each settings menu and starts a pulseaudio session which breaks bluetooth headset connections. Also unsuable for a productive environment in my opinion. Eventually I switched back to the desktop environment with what I started my Linux journey, namely XFCE with lightdm as a display manager. With compton as compositor it looks quite okay, is rock solid (in relation to the other DE I used) and everything feels snappy. As a note, I run all of the DEs on Arch Linux and I haven’t even talked about display scaling and multi-monitor usage, still a horror story.

                        TL;DR The year of the Linux desktop is still far away in the future.

                        1. 5

                          I wouldn’t really know where to go. I have an Arch desktop at home (quad Xeon, 24 GB RAM, 2 SSDs), while the machine is much faster than my MacBook Pro, I usually end up using the MacBook Pro at home (and always at work), simply because there are no equivalents for me for applications like OmniGraffle, Pixelmator/Acorn, Microsoft Office (project proposals are usually floated in Word/Excel format with track changes), Beamer, etc. Also, both at work and home, AirPlay is the standard way to get things on large screens, etc.

                          Also, despite what people are saying. The Linux desktop is still very buggy. E.g. I use GNOME on Wayland with the open amdgpu drivers on Arch (on X I can’t drive two screens with different DPIs). And half of the time GNOME does not even recover from simple things like switching the screen on/off (the display server crashes, HiDPI applications become blurry, or application windows simply disappear).

                          Windows would probably have more useful applications for me than Linux or BSD (since many open source applications run fine on WSL). But my brain is just fundamentally incompatible with any non-unix.

                          1. 8

                            Linux has been my main desktop for 20 years or so? Although I am a software developer and either do not need the applications you mentioned or use alternatives.

                            Anyway, what I actually wanted to say: on the hardware side I’ve had little issues with Linux, certainly not more than with Windows or OS X and at least with Linux (if I put the time into it) the issues can generally be fixed. I’ve been running multiple monitors for years and hibernation used to be a pain in the ass in the early 2000’s but has been good for me on a wide array of hardware for years (definitely better than both Windows and OS X which run on supported hardware!). Granted, I can’t blindly grab hardware off the shelf and have to do some research up front on supported hardware. But that’s what you get if hardware vendors do not officially support your OS and it does come with many upsides as well.

                            I run pretty bare systems though and try to avoid Window’isms that bring short-term convenience but also bring additional complexity, so no systemd, pulseaudio, desktop environments like Gnome for me. Still, I’m running Linux because I want to be able to run Dropbox (actually pCloud in my case), Steam, etc.

                            1. 4

                              Linux has been my main desktop for 20 years or so?

                              Different people, different requirements. I have used Linux and BSD on the desktop from 1994-2007. I work in a group where almost everybody uses Macs. I work in a university where most of the paperwork is done in Word (or PDF for some forms). I have a fair teaching load, so I could mess around for two hours to get a figure right in TikZ (which I sometimes do if I think it is worth the investment and have the time) or I could do it in five minutes in OmniGraffle and have more time to do research.

                              It’s a set of trade-offs. Using a Mac saves a lot of time and reduces friction in my environment. In addition, one can pretty run much the same open source applications as on Linux per Homebrew.

                              I do use Linux remotely every day, for deep learning and data processing, since it’s not possible to get a reasonable Mac to do that work.

                              Anyway, what I actually wanted to say: on the hardware side I’ve had little issues with Linux, certainly not more than with Windows or OS X and at least with Linux (if I put the time into it) the issues can generally be fixed.

                              The following anecdote is not data, but as a lecturer I see a lot of student presentations. Relatively frequently, students who run Linux on their laptops have problems getting projectors working with their laptops, often ending up borrowing a laptop from one of their colleagues. Whereas the Mac-wielding students often forget their {Mini DisplayPort, USB-C} -> VGA connectors, but have no problems otherwise.

                          2. 2

                            Same. I don’t use them every day, but I do need Adobe CS. I also want (from my desktop) solid support for many, many pixels of display output. Across multiple panels. And for this, Windows tends to be better than Mac these days.

                            1. 1

                              The Windows Linux Subsystem is also surprisingly good. I would say that it offers just enough for most OS X users to be happy. Linux users, maybe not.

                            2. 1

                              One thing I’m finding is that a lot of Mac apps I rely on have increasingly capable iOS counterparts (Things, OmniOutliner, Reeder, etc.) so I could potentially get away with not having desktop versions of those. That gets me closer to cutting my dependency on macOS, though there’s still a few apps that keep me around (Sketch, Pixelmator) and the ever-present requirement of having access to Xcode for iOS development.

                            1. 5

                              Around five years ago while I was still studying, and still very green as a developer I started, but never finished an iPhone client for Lobsters. For whatever reason I’ve been messing around with that idea again over the past few evenings, and I already have a nice little alpha version I’ve been using on my commute to and from work. I’m building it in React Native this time, which I’ve been using for a while now and mostly loving despite more than a few warts.

                              1. 2

                                I had thought about trying that for Android, but the web interface seems to do everything I would want to do anyways. Did you come up with something that an iPhone client can do that the web client can’t?

                                1. 1

                                  Mostly I just had a few UI ideas I wanted to play around with, but there’s a few things I’d like out of a native app::

                                  • Ease of sharing links to other apps so I can quickly send links I want to read to Instapaper / Pinboard, maybe behind a swipe gesture or something
                                  • Tighter control over my reading experience with support for night mode and the ability to show links in Safari’s reader mode by default
                                  • A slightly more touch optimised UI. Lobsters actually does a really good job of this for the most part, but there’s some limitations to what you can do on the web versus in a native app.
                              1. 11

                                Sure, there are plenty of solid “9 to 5” coders around. Some people have no passion for programming, yet are naturally gifted for it.

                                However, one problem is recruiting. For every naturally gifted “pragmatist”, there’s a handful who have neither passion nor an aptitude for it. With enthusiasts it’s relatively infrequent you’d stumble on a total dummy. Perhaps that’s what is behind the GitHub participation interview metric (and the tendency to cheat that of course).

                                1. 10

                                  I don’t think it’s fair to say someone who predominately writes code 9–5 isn’t “passionate”. There’s a difference between passion and singular devotion, and it’s entirely possible to be a good coder who takes pride in your craft while also, for the most part, pursuing other hobbies in your spare time.

                                  1. 15

                                    It seems like people are using the word “passion” in place of “competence”. You don’t have to be passionate to be a solid employee.

                                    1. 3

                                      Yes, when I wrote passionate I meant passionate. I can be good and very efficient at cleaning, that doesn’t make me passionate janitor if by life circumstance I end up doing that.

                                    2. 5

                                      I hope I will meet more 9–5 software developers who have a passion, who at 5pm can’t wait to see the end of the problem we’re debugging, who due to family/hobbies/whatever has to leave, but is yearning to get back the day after to together resolve the issue. These people and those for whom programming is their main hobby, they all inspire me and cause me to want to learn new things, figure things out, resolve issues and in general make things better. I hope I inspire others to do the same. :-)

                                      1. 7

                                        Well, hello there, I’m one. A passionate developer, who tries not to do work on my personal time. A few things to clarify though:

                                        • I believe you’re falsely equating the desire to end work at the same time daily with hating it. The former is just an issue of organizing one’s time that becomes more important the more responsibilities you take both at and off work. Coding without recess or sleep is usually a sign of a young person who can afford it physically. But it’s never efficient.

                                        • You don’t have to immediately shut off your work laptop at 17:00:00 to make it count. We’re not robots. When I have a few spare hours on a weekend I prefer not to log in to work and run tests I didn’t finish on Friday. I’m pretty sure Monday is going to be just right for it. But if there’s an occasional thing I think I can actually finish in half an hour extra work, I’m fine with it too. Just use your best judgment and learn not to slip into doing more and more work.

                                        • Dropping work every day at reasonable time doesn’t mean a programmer has no passion. It just means they have other passions, too.

                                        1. 1

                                          Hi, fellow passionate developer! :)

                                          I think I understand what you mean, but it is not about me thinking people hate their work. Perhaps it would be more accurate to say I might be “falsely equating the desire to end work at the same time daily with not caring too much about what you do”. What I’m looking for is the expressed desire or yearning to want to finish things, but having to leave for whatever reason. That is is enough for me, I’m not asking for people to sacrifice their family life.

                                          And I didn’t mean that one has to incessantly check one’s work mail or coding from home during the weekend, at the benefit of one’s employer (of course(!) one should get paid for the work, at all times).

                                          For me programming is not something I only do to get paid, I do it without getting paid too (own projects, or contributing to open source in my spare time). Hence I’m usually interested in what developers code or what tools they look into in their spare time when they are not limited to what the company, its development process, the project manager or the customers ask for.

                                          Sorry for not expressing myself more clearly. I hope my point comes across more clearly now, even though you might still not agree with me.

                                          PS. I don’t know so much about Chinese tea brewing, but I’m currently learning Chinese. :)

                                          1. 2

                                            Yes, it’s more clear now, thanks! Let me clarify myself as well:

                                            What I’m looking for is the expressed desire or yearning to want to finish things, but having to leave for whatever reason.

                                            The reason for leaving work at reasonable time is the acceptance of the fact that body and mind need rest in order to continue doing that work efficiently over a longer period. I don’t just cut myself out of it for the sake of not doing it. It wasn’t like that for me when I was in my twenties, but with age I learned that sweet spot of diminishing return when I know that pressing on for longer would produce too little for too much effort. So I learned to take my hands off keyboard and let my brain work on things in background, while I do my cooking/running/parenting/whatever.

                                            By the way, it doesn’t have to be exactly 8 hours. For myself I learned that I can’t really be in the flow for longer than 3-4 hours a day, with rare exceptions. And I’m lucky to work at a company that lets me manage my own time in this way.

                                      2. 1

                                        Sure you can redefine “passionate” to mean anyone remotely competent, but then we just end up needing another word for passionate, er, people who are interested in programming beyond their careers.

                                        1. 2

                                          I’ve beem thinking about this a bit today, so I’m going to try and distil those thoughts down here:

                                          1. Beyond a certain point in your career, a singular focus on code can become pretty limiting. The profession of software development encompasses so many different disciplines, and narrowly defining it as ‘writing code’ can lead you to neglect those.
                                          2. I write better code when I’m well rested, I’ve eaten well, and I’m in s good mood. One of the things I’ve had to learn to do is to cut myself off when it’s necessary; to not work ‘til 3am on that side project that I can’t stop thinking about, to go out and do stuff on my weekends and not feel like I’m wasting time I could be using on side projects. This one has been hard for me.
                                          3. Any job where you’re expected to tend to your professional development on your own time is a lousy job. I’m lucky to work at a company where we have time and money put aside each and e dry employee to spend on professional development, and I recognise this isn’t the case for a lot of working developers. But he point still stands.
                                          4. Often the concept of ‘passion’ and pride in one’s work is used by employers to justify things like unpaid overtime, unrealistic deadlines, and so on and so forth. I always feel guilty doing it, but sometimes the best thing to do is go home at 5, let your work wait, and not try to make unrealistic schedules work through Herculean will and passion.
                                          1. 4

                                            Beyond a certain point in your career, a singular focus on code can become pretty limiting.

                                            I find it interesting that you seem to see writing code as a means for career advancement. For me, the career advancement is the chore I have to manage in order to keep coding.

                                            1. 2

                                              Can’t really object to any of your points, but I feel none of them has much bearing as to whether someone is passionate about something or not. My mention of passion wasn’t an attempt to guilt-trip, am perfectly OK with professionals who just do what they paid to do without consuming interest in the trade.

                                      1. 1

                                        I personally prefer Flow over TypeScript, but the general idea of adding types to JavaScript is something I’m all for. One of my favourite things about both of these tools is being able to, for example, change the shape of my Redux store and then follow the errors Flow/TypeScript generates to find every part of the codebase which that change affects.

                                        1. 2

                                          How are you finding flow+redux?

                                          I spent >30 unsuccessful hours trying to get connect to return a useful component with the right Props (and learned all the secret/experimental features doing so).

                                          I’d like to try TS on my next project; flow has burned me by being silently unsound.

                                          1. 1

                                            Yeah react-redux’s connect() HOC is the one place where I’ve never had much luck with Flow. The main issue seems to be an underlying issue in the Redux library definitions, though there’s a PR to fix those which I haven’t tried myself https://github.com/flowtype/flow-typed/pull/1731

                                            Edit: Just threw those new definitions into a medium size project and they work great. Even helped me pick up one or two subtle bugs.

                                            1. 15

                                              Glad it worked for you.

                                              That said, the thought of using two-day-old code from an open pull request is reminding me why I’m trying to avoid the front-end space right now.

                                              1. 2

                                                I want to upvote this a thousand times.

                                        1. 2

                                          They didn’t bother to have an HTTPS download link? Not going to bother trying it.

                                          1. 11

                                            There’s a bunch of weird red flags here:

                                            • No way to download the installer over HTTPS
                                            • The installer itself isn’t signed on macOS
                                            • Upon launching the installer, I was prompted for my email
                                            • The 163MB (??) installer then proceeds to download Luna Studio, which is itself 1.2GB

                                            I’m messing around with it now and it seems really cool, but there’s a lot they could do to make that setup process better and more secure.

                                            Edit:

                                            It also replaced the atom command on my system with one that launched Luna Studio

                                            1. 2

                                              Those things you mention really seem quite bad. Hopefully, they’ll fix that soon. Especially the one with atom is baffling!

                                              1. 1

                                                Wow. Thanks for letting us know.

                                              1. -1

                                                TBH, once I got into Brave, I became very sceptical of these kinds of posts.

                                                Most of the CPU cycles of modern browsers are given to the parasite tracking code nowadays. I don’t really care about the whole DNT movement, but when all the sites have multisecond delays, freeze your scrolling, blow out your CPU and crash your apps on decent hardware, you know something’s gotta give.

                                                I easily get 10x the speed in Brave compared to Chrome. All those improvements in Firefox sound nice, but I don’t see a paradigm shift of killing off background JavaScript tracking here. Until that’s done, Brave would still be much faster IRL, even if its engine is slower.

                                                1. 12

                                                  Luckily ad blockers work in Firefox, I guess?

                                                  1. 7

                                                    You know Brave’s income model is ad-substitution. You’re not doing away with those tracking code, you’re just replacing it with another. You can opt out, but you can also install an ad-blocker on chrome or firefox (or safari, or edge).

                                                    1. 1

                                                      That’s the thing — I don’t care about ad substitution, or the privacy part of tracking all that much.

                                                      I highly doubt they’d make their own ads and tracking have anywhere close to the performance impact that all the third party tracking has nowadays.

                                                    2. 5

                                                      You mean something like the tracking protection Firefox has had built in for some time now? It’s enabled by default too.

                                                    1. 52

                                                      Just as important as Firefox being a distinct product is that it uses its own rendering engine. There are only three major browser rendering engines: Trident/WhateverTheyCallTheEdgeEngine (Microsoft), WebKit/Blink (Chrome, Chromium, Safari, Opera, most one-off browsers like Web in GNOME, WebPositive on Haiku, etc), and Gecko/Servo (Firefox).

                                                      It’s not enough to have a million different browsers if they’re all using the same rendering engine. We need variety in implementations on that front too…

                                                      1. 11

                                                        Very good point; I spoke of this issue with a colleague a couple of weeks ago, and I asked: “what happens if Microsoft decides to get out of the web browser market and Mozilla collapses?” Then, for all intents and purposes, Google would literally control the web. Now, I don’t know how likely it is that Microsoft would stop its Edge effort or that Mozilla would go under—probably not very likely in the short term. Still, it seems to me that the complexity of the modern web (HTML 5, CSS, JavaScript with a state-of-the-art JIT compiler, DRM, etc.) makes it unlikely that we’ll see another web engine—much less a free web engine—that can compete with the current trio, and practically impossible to see enough new web engines to actually create competition.

                                                        1. 7

                                                          Agreed, the only way you web standards can realistically be called standards is if there’s a variety of implementations, and a variety of vendors with enough influence to shape those standards.

                                                          1. 5

                                                            EdgeHTML. No really, that’s the name of the rendering engine. Microsoft continues to amaze with their horrendous naming :)

                                                            1. 9

                                                              Could be worse. Could be EdgeTML.

                                                              1. 1

                                                                Older versions of IE could be called “FML”, which is exactly how you feel when tracking those IE only bugs.

                                                          1. 1

                                                            I never had a Game Genie / GameShark as a kid but this is still a great overview of how the NES worked. I’d be super interested to read a more in depth article about the NES/SNES hardware if anyone knows of one.

                                                            1. 3

                                                              This is an interesting overview of NES emulation and how it relates to the hardware: http://arstechnica.com/gaming/2011/08/accuracy-takes-power-one-mans-3ghz-quest-to-build-a-perfect-snes-emulator/

                                                              1. 1

                                                                You could start with emulators people are writing. Brit Butler has been working on a 6502 emulator in Common Lisp, and has plenty of notes.

                                                              1. 1

                                                                I’m wondering what the developer of Reeder is going to do in response to this. Currently the iPhone version also supports Fever but the Mac and iPad versions are locked into Google Reader.

                                                                1. 2

                                                                  Anecdotally I’ve found building apps with Ember.js and the fantastic rails_api gem to be incredibly straightforward and speedy. On top of that, the end benefit of having a mature JSON API that you can then use for other applications (iOS, Android, Windows 8, etc.) far outweighs any extra development costs (which I’ve found to be relatively minor anyway).

                                                                  Also I’m not sure what the author’s getting at when he says all Ember.js apps look the same.

                                                                  1. 1

                                                                    Some good tips here, I hadn’t heard of a few of these. Lately I’m finding it pretty nice to have my git log always visible in a terminal window while I’m working, right now I’m using a great little script called omglog to do this. It’s nice having a bit of context about where you are in the git tree and to see at a glance where every branch is up to.

                                                                    1. 2

                                                                      I like the idea of democratising the addition of new tags, I’ve also run into cases where I just don’t post stories to Lobsters and I think it’s ultimately detrimental to the site’s variety.

                                                                      1. 2

                                                                        I’m teaching Rails to some fellow students at my university this year, a sort of unofficial student-run course thing, and some of these points have definitely rung true for me. I’m not a fan of a lot of things the 37Signals stack does, but on the other hand I don’t want to spend our entire first workshop setting up the project, the workshops are voluntary and having the first one be so dull is a surefire way to cause loss of interest early on.