Seems like there's nobody better than Panic at doing this sort of thing. They're willing to push Apple's UI forward, but they always do it in a way that feels Apple-y. Didn't they also pioneer a tab UI that Apple ended up adopting?
Seems like there's nobody better than Panic at doing this sort of thing. They're willing to push Apple's UI forward, but they always do it in a way that feels Apple-y. Didn't they also pioneer a tab UI that Apple ended up adopting?
The last time I was working on a text editor (KDE's Kate) and found a bug in the text layout engine it was written against (Qt's), I wrote a patch, submitted it upstream and it made everyone else's apps better, too.
I can't imagine the world of hurt, discomfort and frustration of developing against a lib set I can't read source code of or improve.
With no access (or ability to patch) the platform source code you are left with a) hacky work-arounds, b) re-implement the component or c) change the app's design or feature to compensate. All of which are a pain / more work / risky etc, etc - just to work-around bugs in the platform.
Sure you can file radars (I do), but whether something gets fixed or not, is up to the gods...
Mozilla? Getting your patches merged is rather easy and very pleasant. Firefox is truly a community project we all build together.
Thank you.
It boggles the mind that anyone who can write code would ever use a closed source operating system.
Some of us want our work to actually reach people who don't write code or sysadmin their own computer, i.e. most people in the world. I, for one, think my effort is wasted if it doesn't benefit those people. So while working exclusively on a free-software platform is tempting from an ideological purity point of view (edit: and I envy people like you that manage to make a living doing it), I don't think I'd ever actually do it.
Edit: I should be more concrete and less snarky. Working on developer tools is good and necessary, and you can do that effectively on a free-software platform like Linux. But I choose to focus on end-user-facing software, particularly in the field of accessibility. I could work on desktop Linux accessibility, for the vanishingly small number of blind people who use desktop Linux (and that number is shrinking; one of my blind programmer friends just switched to Windows). Or I could target one or more of the mainstream platforms where the users actually are. I suppose I could work exclusively on web applications, but I don't think that would be the best use of my skills. And even then, while I could develop primarily on Linux, I'd have to test on other platforms too.
The majority of the internet is run on free software, and free software touches nearly every stack, even ones that are otherwise proprietary.
With regard to accessibility, there are open source tools out there that are pretty great for blind users, but they still need more work. There are also blind users that can't afford a Windows licenses or expensive screen reader software. I've worked with a local charity that helps people with sight impairments, and the money just isn't there when it comes to expensive software licenses and hardware.
If more open source options for people that have sight impairments become available, that would help a lot of those that are currently priced out of using modern technology for work, leisure and social interaction.
Someone has to do it. If you have the skills, why not you?
> one of my blind programmer friends just switched to Windows
Where they happy that their choices were being reduced to using a closed source operating system, now forever being dependent on the support of a giant corporation, partially because their friends like to write code that "actually reaches people" instead of contributing to an open and accessible solution used by a vanishingly small number of blind people?
I really wish you would step up and embrace the ideals you espouse, because I think that you could make an amazing impact if you applied yourself to it.
I like developing on Windows. Especially since the programs I write are run only on Windows. That's what the specific trillion dollar industry my employer serves uses mostly on desktop.
I don't want to tweak the platform. I want to concentrate on the code I write. I could be equally productive on OS X or Linux, but frankly, I don't care. They are all interchangeable computational substrates for me. As long as you can write any program on them, that is...
From my employers point of view it is irrelevant if I could fix the platform since they most certainly don't want to pay for it.
This is not evil. It's just how some parts of the industry work.
As experienced devs with love of open source, they made this choice after thinking about it. They just have different value weights for their goals and those aren’t the same as other folks. Not a biggie
Which you have to create and convince the maintainers to accept. Some maintainers are gracious and others not so much.
Impression I get with Microsoft 'developer doesn't want to work on it' isn't a show stopper like it is with open source.
I get your argument for a closed platform where you have a direct phone line to its developers that will fix any platform bugs you find ASAP, but MSFT hasn't been that kind of platform for years...
My MFC/VCL applications work just fine today, and can be easily extended to take advantage of modern UWP APIs.
You can start by having a look at,
http://toastytech.com/guis/cedar.html
"Eric Bier Demonstrates Cedar"
https://www.youtube.com/watch?v=z_dt7NG38V4
"Alto System Project: Dan Ingalls demonstrates Smalltalk"
https://www.youtube.com/watch?v=uknEhXyZgsg
"SYMBOLICS CONCORDIA ONLINE DOCUMENTATION HYPER TEXT MARKUP 1985"
https://www.youtube.com/watch?v=ud0HhzAK30w
You can see how NeXT builds on many of these concepts on the famous "NeXT vs Sun" marketing piece,
https://www.youtube.com/watch?v=UGhfB-NICzg
Sun also had some ideas along these lines with NeWS,
"NeWS: A Networked and Extensible Window System,"
https://www.youtube.com/watch?v=4zG0uecYSMA
Naturally OS/2, BeOS, Windows, macOS, iOS, and even Android share some of the ideas.
Now, before I proceed note that actually modern Linux distributions have all the tooling to make these concepts happen, but it fails short to have everyone agree on a proper stack.
So basically, the main idea is to have a proper full stack in place for developing a Workstation computer as one single experience, from bottom all the way to the top.
On Xerox's case, they used bytecode with in-CPU execution via programmable microcode loaded on boot, and later on just a thin native glue on top of host OS.
The environments had frameworks / modules for the whole OS stack, supported distributed computing, embedded of data structures across applications (OLE can trace its roots back to these ideas), REPLs that not only could interact with the whole OS (commands, modules, running applications), it was also possible to break into the debugger, change the code and redo the failed instructions.
Linux distributions get kind of close to these ideas via GNOME and KDE, but the whole concept breaks, because they aren't part of a full OS, rather a bunch of frameworks, that have to deal with classical UNIX applications and communities that rather use fvwm (like I was doing in 1995), and use a bunch of xterms, than having frameworks talking over D-BUS, embedding documents, all integrated with a REPL capable of handling structured data, and call any kind of executable code (including .so, because the type information isn't available).
And then every couple of years the sound daemon, graphics stack or whatever userspace layer gets redone, without any kind of compatibility, because it is open source so anyone that cares should just port whatever applications are relevant.
It is quite telling that most Linux conferences end up being about kernel, new filesystems, network protocols, and seldom about how to have something like a full BeOS stack on Linux. Even freedesktop can only do so much.
A perfect summation!
These days it just works though.
From GP:
> use a closed source operating system
That's not "Windows".
That's just not true, though. Here's a git repo listing what works and doesn't work in Linux for all of the macbook pro models since 13,1 (released in 2016): https://github.com/Dunedan/mbp-2016-linux
You'll notice that power management (suspend/resume) doesn't work for any model, wifi only works for a few select models, and support for audio is pretty spotty. If you buy Mac hardware, you're pretty much locked into MacOS if you want to have a reasonably acceptable experience.
BSD support is much, much, much worse--it basically doesn't work at all for any relatively recent model.
Well, would probably work fine with an external keyboard/mouse :D
NVMe should crash right now like it did on Linux before 5.4, but the Linux patch for that https://github.com/torvalds/linux/commit/66341331ba0d2de4ff4... is absolutely tiny, I could probably replicate these quirks in FreeBSD in a few minutes.
The SPI keyboard and touchpad thing though is just.. WHY?? Everyone went with HID over I2C, Apple went with a completely new protocol over SPI. So annoying. I wouldn't want to work on supporting that crap.
> power management (suspend/resume) doesn't work for any model
um, that page says that you have to disable a power saving state on NVMe and it would work on any model with Intel GPU.
But more to the point: Apple has proven it _can_ be that good, so I want a control that _is_ that good. Why would I ever go backwards?
It's not like Apple benevolently gave this touchpad to the world, for our betterment and happiness, but for the singular, exclusive purpose of luring you into their ecosystem. But you don't benefit when they profit, you were the prize.
You should demand they give it away for free, because you should not give a shit about their profit because they (it) do not give a shit about your life or freedom or the economy of the social strata you live in. It's an alien machine that will eat you or it will fight you but it won't know the difference.
For me it's this, it's been proven I can get an OS that is open and free, doesn't mean I have to support and buy into some terrible multinational corporation whose goals I do not agree with, and that I get to have control over my own OS in a sense that is utterly freeing compared to MacOS or Windows. So why would I ever go backwards?
I pay Apple for hardware and software. I get good value in exchange. I don't particularly care beyond that.
You're trying to change this into an argument about freedom and open source. It's not. I want a trackpad that feels premium, the same reason I buy a nice car. I do not care how it's done and I do not care about the price.
tl;dr If the Linux ecosystem could provide it, good - I'd consider it. Put up or shut up.
It's always fun for me to meet people who do things the complete opposite I do them. It's oddly satisfying, like, I'm glad someone is my polar opposite on an issue or activity.
I've also grown to loathe that first-line tab beginning the second paragraph. It makes left-aligned text look wonky.
I loathe centered text too.
I'm not a rounded rectangle person.
I think the colored block UI that's all over Android, sites like HN, etc. looks tacky. We went from semi-transparent glass UI to flat colored blocks, and somehow interfaces got slower and more processor intensive. Now, that's a horse of a different color.
Consider getting a separate USB trackpad and putting it in a "mouse like" position so your wrist is straight and you can raise the laptop to just under eye level.
So I'll have a proper monitor and a standalone keyboard in front of me. And the MacBook screen on the side is being used to display secondary information (chat windows and logs I don't need to actively look at).
Having the fingerprint sensor and the TouchBar lock button within reach are also nice (yes, I actually like the touchbar)
And the most important feature for me. I can work a full day on it without any RSI related symptons. No other mouse can do that for me.
I use a normal mouse on my gaming rig, though. Because trackpads are awful for gaming.
There are keyboard shortcuts for those, which are even nicer imo. Reduces the amount of times you need to take your hands off the keyboard.
The term to look for is “Windows precision trackpad”.
"our joy at Panic comes from building things that feel truly, well, Mac-like"
I definitely wanted to! (I'm the Charles in the story.)
SoundJam's hierarchical playlist has yet to be replicated by any other music player to my knowledge.
Like playing music by albums, or artists and it would recursively play all of the music within those albums?
It would then be played in order, yes, recursing through all the layers.
I might be able to replicate this by building a front-end for it which converts it into a flat playlist for Spotify/Apple Music etc.
This is a great example of how Jobs did not want to compete with his developers, he just want to make a better Mac for their customers.
Cabel, and Panic in general, are true heroes of mine.
I do a significant amount of text engine work and I'm skeptical what they implied by this. The likely case is they glued together other solutions (Like HarfBuzz/FreeType/etc) and expose their own API on top of that. This is perfectly acceptable and even encouraged for accessibility reasons. It may be that CoreText isn't acceptable for their use case.
What I think this would be misinterpreted as them writing the whole stack from scratch. For example, shaping is part of layout and it would be monumental if they wrote their own shaper given even HarfBuzz, DirectWrite, and CoreText do not have complete coverage yet. Additionally, BiDi + line breaking + shaping has bugs even in Chrome on some edge cases.
I'm not sure how many good native text editors don't have their own text editing engine.
I think it's entirely plausible that Panic also shipped a text-layout system without full bidi support -- maybe that's why theirs is faster and less buggy on LTR text. The left-to-right language market (English, Spanish, French, Russian, Chinese, Japanese, Korean...) is probably big enough to support a Mac app development studio on its own.
I don't think saying to Hebrew/Arabic programmers "sorry, this product isn't for you because it would require a large amount of effort and we can't support it" is an unreasonable thing for a small shop to do. Yes, Apple and Microsoft and Gnome should support RTL because it's important for someone to do it, but there's nothing wrong with saying "this product isn't designed to solve all problems in all languages".
I also fondly remember how wonderful the web development deployment workflow was in Coda. This was back before source control was ubiquitous and CI/CD was required for any real production environment. It was the cleanest way I'd seen to go from saving in your test editor and having a clear path to SFTP it to the server. I half recoil in horror and am still in awe of how considered their experience was.
Your memory may be playing tricks on you, it wasn't that long ago. Coda 1 had SVN support out of the box, and at the time SVN was already old and in decline, not to mention CVS and other lesser source control systems. By the time Coda 2 came out, git had won the DVCS battle, and was built into it.
Now, granted, back then I wasn't very keen on version control either but it's not because it wasn't there, it's because I was young and inexperienced, and didn't know any better. Plus, those days the only common use for source control was actually, well, source control, unlike today. It was something you had to discipline yourself to use for no immediate benefit.
I started my career at around that time in a company using Python for web application development and everything was in SVN but already in the progress of being moved to git and while there wasn't a CI/CD server, all deploys were done running a single cli command. On the other hand for years to come I have seen e.g. people and agencies doing websites in Wordpress making changes directly in production.
In that circles, which often included people with no heavy technical background like designers that learned some php/html/css Coda was quite a relevation I think.
"Appley" would be living with the limitations of apples implementation because apple knows best, and they tried their hardest to lock you out from any alternative option.
Plus ca change in a proprietary world.