There are three tenses in English that denote time: past, present, and future. There are two tenses in English that denote aspect: perfect and progressive. The aspect tenses can be combined with the time tenses. For example, a past tense can be perfect, or progressive, or both. This gives us a total of twelve different ways to sneeze in first person:
- Past: I sneezed.
- Past perfect: I had sneezed.
- Past progressive: I was sneezing.
- Past perfect progressive: I had been sneezing.
- Present: I sneeze.
- Present perfect: I have sneezed.
- Present progressive: I am sneezing.
- Present perfect progressive: I have been sneezing.
- Future: I will sneeze.
- Future perfect: I will have sneezed.
- Future progressive: I will be sneezing.
- Future perfect progressive: I will have been sneezing.
Not all languages have all these tenses, and likewise, English lacks some tenses. One example of the latter is the imperfect tense, utilized by Latin, French, and Greek. In the case of missing tenses, most languages have close equivalents, but it’s never a perfect match. Your sneeze isn’t quite the same as a Frenchman’s.
Here we have a millionaire, John, linking in approval of an article that blames billionaires for their greed; who in turn, if they had opportunity, would gladly pass this blame on to trillionaires. I suppose many persons have visited this story today and shook their heads in righteous indignation, never once thinking to take their own gains from the past year’s stocks and bestow them to the poor. No, that’s a problem for the truly rich, where by truly rich I of course mean anyone who has one dollar more than oneself. If having wealth means having guilt, which it does not, then there will always be those out there who are guiltier, to whom we may eagerly point the accusatory finger.
GitHub’s article on protected branches states that a protected branch can’t be force pushed nor can it have changes merged into it that haven’t passed CI. Asssuming you’ve set up CI on your repo, this means that you can never push to a protected branch from your local machine (even a non-forcing push), since the only way for CI to pass is through a Pull Request. What I’ve discovered though is that if you do a
git push to a protected branch, GitHub rejects the branch from updating but the commit itself exists on GitHub’s server in limbo, untied to any branch (i.e. it has zero connectivity). Since GitHub never purges commits regardless of their connected state, you can access your rejected commit in perpetuity with this URL scheme:
Last month, Chris Brogan had an interesting story to tell about a domain that GoDaddy sold and then retracted due to a price glitch. It’s a long story and I won’t attempt to summarize it here. Read it in full and then come back.
Clause 10 of the GoDaddy Legal Agreements and Policies gives GoDaddy the right to do exactly what Chris is so upset about:
GoDaddy expressly reserves the right to deny, cancel, terminate, suspend, lock, or modify access to (or control of) any Account or Services (including the right to cancel or transfer any domain name registration) for any reason (as determined by GoDaddy in its sole and absolute discretion), including but not limited to the following: (i) to correct mistakes made by GoDaddy in offering or delivering any Services (including any domain name registration) […]
To correct mistakes made by GoDaddy in offering or delivering any Services (including any domain name registration). You agree to this ToS when you buy a GoDaddy domain.
With something as important as a domain purchase, there either must be a real time option available OR there has to be a lot more/better communication flow explaining this experience.
The realtime concept just isn’t a realistic option. And while it’s true that GoDaddy could be more in-your-face about the conceivable scenarios where clause 10 of its ToS might come into play, the scenarios in which it does come into play are exceedingly rare, as evidenced by Chris’ shock despite being a longstanding customer. What GoDaddy could do is have a summary of clause 10 at font size 11 in the footer of the checkout page, although no one is going to read that. But giving this information a truly prominent position at checkout is absurd since it almost never actually happens.
Regardless, it’s unfair to expect GoDaddy to be obligated to its up-front price and eat $550 on a single transaction. That’s like short selling — the sky’s the limit on how much the company could lose on a premium domain glitch like this.
The customer may choose to abandon his cart, and the merchant may choose to abandon the sale. Both parties have this freedom. Those are the rules of engagement when it comes to domain purchases. It’s clearly stated in the ToS. If you have a problem with that, you have the freedom to not buy domains.
My biggest beef with GoDaddy in this story is the fact that it gifted this domain simply because of the prominence of the customer’s lover. GoDaddy should be consistent and stick to its policies regardless of the pedigree of who’s whining.1
- The amount of ruckus that Chris has raised over this makes his statement here to seem disingenuous: “To be utterly honest, if the price started at $650, Jacq would’ve bought it without flinching.” If Chris really meant this, he would’ve put his money where his mouth was, and gone forward with the deal at the new price. ↩︎
From the Slack Help Center:
>>>to blockquote multiple paragraphs
This will save some typing.
Last June I complained about the fact that you can only cancel a yearly Adobe Creative Cloud Subscription on the month of renewal or else you’re charged a penalty.
Well, today was that final month for me, so I went about to cancel my subscription. There should be a “Cancel subscription” link in your plan details, but if there’s not, you’re supposed to “Contact us to cancel your membership.” I didn’t have that link (does anyone really get that link?), so I had to contact Adobe. Here’s a transcript of the 44 minute ordeal,1 with nothing obfuscated except my email.
You be the judge of whether Adobe is hostile or not with its customers.
- The “We have not heard from you for some time” ocurred after just two minutes of inactivity. The chat page has no sounds nor title notifications when a chat occurs, so unless you stay glued to the page, there’s no way of knowing when a new chat has arrived. ↩︎
The piece talks about a deal that Apple is making, one that likely wouldn’t be happening if it weren’t for the tax reform that the Trump administration has made. You can agree or disagree with the merit of the tax changes, but I don’t think you can disagree with that fact.
Meanwhile, it’s surprising the shocking number of typos and errors that have been lately appearing on Daring Fireball. The other day I shared with a friend a screenshot of the page with a typo in the lead story and a sidebar in HTML disarray, with pieces of unescaped markup appearing directly on the page.
It’s funny to me that the man who deeply laments the fact that not all sites use true quote marks “despite the fact that, algorithmically, it’s a solved problem,” can’t figure out a way to run a simple spell checker on his site. Which is more important: true quote marks (which some people argue should be completely done away with on the web anyway) or properly spelled English sentences?
What’s more ironic is the fact that he also considers Trump to be a “moron” simply for using capitalized sentences:
Seriously. No snark. Can someone who supports Trump please explain to me how his choice of which words to capitalize, and which ones to quote, isn’t proof that he’s a “Moron”?
Are we to deem capitalized words to be a greater transgression than misspelled words?1 Actually, Trump’s capitalization strategy has Gruber talking about his content. That was Trump’s goal, so joke’s on Gruber. If you can’t immediately spot that then I have a book for you.
If blog posts were as impossible to edit as tweets, then I sometimes wonder if Gruber’s feed would be less full of them than the president whom he considers a moron for less linguistically offensive behavior.
Moreover, capitalizing strategic words is something that all English writers did 200+ years ago (I’m looking at your autobiography, Benjamin Franklin). Many writers continue this practice to this very day. For a prominent example, I offer Mitch Joel, president of Twist Image, the largest digital marketing agency in Canada. Take this piece he wrote back in February 2009 and notice how many nouns are capitalized that normally aren’t in modern prose:
If you could name one thing that was really missing from your Digital Marketing strategy, what would it be?
The general sentiment is that most companies feel like they are either totally missing the boat when it comes to Social Media (either that or they feel like they are missing the point) or are struggling to understand how to be more efficient with their Search Engine Marketing.
It turns out that saying most corporate websites suck is not a personal criticism, it’s a simple reality of how we - as Marketers - see ourselves and our competency when building and developing these digital marketing strategies.
Does anyone dare call Mitch Joel a moron for this?
If you’re not guilty of a double standard, John, then you may throw the first stone. Otherwise, maybe it’s time to put your rocks down.
- “We hold the US president to a higher standard.” Sure. But Trump doesn’t make a living writing tweets. John Gruber does make a living writing Daring Fireball. ↩︎
I spent 15 minutes this morning throwing together Scratchpad, a very simple web interface for jotting down quick notes. The text is saved on every keystroke locally in your browser’s localStorage, which means the data never hits a server. It’s meant to serve as a Stickies replacement in situations where you just need to write something down real quick, which is likely a daily occurrence if you make a living writing software. Think of it as a dry erase board useful for chicken scratch.
Scratchpad is hosted on GitHub Pages and gets its SSL certificate from a free CloudFlare account. I’m still amazed how these modern tools let you spin up something in no time on a custom subdomain for zero cost.
Ian Allen, writing at the Stack Overflow blog:
The latest startup is the Vue.js framework, which has shown quick adoption, as it is one of the fastest growing tags on Stack Overflow. Only time can tell how long this growth will last.
One of the fastest growing tags on Stack Overflow. Let that sink in.
Then there’s Ekaterina Prigara, writing at the WebStorm blog:
One of the things I go back and forth on is whether to go with an overall dark development scheme or an overall light one. Recently I switched from dark to light. This involved a few changes:
- Unchecking the “Use dark menu bar and Dock” checkbox in System Preferences -> General.
- Switching from a dark to a light color scheme in my primary IDE, VSCode (I’m now using the “Visual Studio Light” theme).
- Changing my Chrome theme from “Dark” to “Light” in developer preferences.
- Changing my iTerm theme from a dark one to a light one — specifically to Ayu Light.
Ayu Light is an incredible theme. I’m enjoying it so much that I’ve
copied stolen some colors from it and made it a Drinking Caffeine theme option in Settings. It’s the default theme on the site for now. It’s friendlier and more pleasant than its predecessor. It’s a statement of how I want 2018 to feel compared to 2017 in general.
As an iOS developer enthusiast, ScreenShield’s recent news is bewitching me. John Gruber:
My best guess as to how they’re doing this is that they’re using AVPlayer and somehow using FairPlay Streaming to block screenshots and recording.
@gruber interesting on the FairPlay streaming idea, but I don’t think that’s it.
I was able to use my iPad, I had DIRECTVNOW minimized to a picture-in-picture window and launched Confide. If Confide was using Fairplay, my DIRECTVNOW PIP should stop playing but it didn’t.
Dave Anderson offers an alternative explanation.
As the Confide team has stated, “There’s a lot of technology under the hood that makes ScreenShield possible.” Maybe it’s all of the above?
The fascinating thing is this. Apple’s created this scarcity, and it could remove it at will if it pleased. Apple could sherlock ScreenShield if it wished to. A technology that is very difficult as a 3rd party developer but significantly easier when you’re in control of the operating system is a dangerous thing upon which to build a business.1 All it would have to do is add a
UIApplicationUserWillTakeScreenshot method to
UIApplication. It would just require an earlier listener emission compared to the current UIApplicationUserDidTakeScreenshot. If the aforementioned method existed, iOS developers would have to do a bit more work than using the dropdead simple SDK that ScreenShieldKit offers, but it would be a hundred times easier than reinventing ScreenShieldKit, and developers could open-source a solution that offered a similar SDK as ScreenShieldKit’s.2 It would no longer be patentable.
And then of course there’s the devil’s advocate view that this ability is going to create user-hostile apps and that maybe Apple should not allow this at all. The libertarian in me doesn’t care about that. If software developers don’t want you to be able to take screenshots of their application, and they know how to keep you from doing it, then more power to them.
To start searching in Bitbucket, click on the magnifying glass under the Bitbucket icon in the sidebar, then enter either a single word or an entire phrase (in double quotes)
This was one of my biggest complaints about Bitbucket. With this one feature, the gap between GitHub and Bitbucket is greatly diminished.
Yoni Heisler, writing at BGR:
With the iPhone SE’s 2-year anniversary coming up, we’ve seen a few rumors surrounding Apple’s plans for a follow-up over the past few months. According to speculative reports, Apple’s second-gen iPhone SE will launch this coming March and will be available in 32GB and 128GB capacities. There are also rumblings that the device will house the same internals as the iPhone 7, which is to say it will feature Apple’s A10 Fusion processor and perhaps a more capable battery.
As Gruber said on an episode of The Talk Show, the iPhone 5S was the last perfect iPhone Apple made,1 which now lives on as the SE. I miss the home button being an actual button, the power button being at the top of the device, the absence of a camera bump, and the round volume buttons. If the SE 2 (or whatever it will be called) is going to capitulate on any of these features to conform to the main iPhone lineup, it’s missing the point of why it exists. Here’s to hoping the SE 2 doesn’t capitulate.2
Let’s look at the facts:
- Most people use Google as their search engine.
- Most people use Chrome as their browser.
- AMP pages are faster than any other type of page.
- As a result, Google’s won the battle of persuasion to the end user, and that’s all that ultimately matters. Google wins.
People can complain all they want atop the peak of the moral high ground, but we’re never going back to a pre-AMP era. No end user wants that, including myself. Every time I load an AMP page, I’m happy, because I know it’s going to be fast, and fast is what we want when we’re on Google, particularly on mobile. Google innately gets this, which demonstrates that the company real does care about the mobile web more than some people give it credit. Every major site I know is implementing AMP, because why wouldn’t they?
Valentina Palladino, writing for Ars Technica:
Garmin’s Vivoactive 3 provided a solid alternative to the Fitbit Ionic and the Apple Watch last year, but it lacked one big feature: onboard music storage. At CES, Garmin announced its first wearable with space to save music you could listen to without your smartphone present: the $450 Forerunner 645 Music.
There’s a huge demand to be able to play music from a Garmin device. The little underdog company keeps innovating, and it’s great to see.
The inevitable result of creating special interest groups is that eventually, everyone becomes a part of a special interest group. They’re counter-productive in the long run. It’s about time that Google came to terms with this realization.
If your worldview is that mankind is evolving and constantly getting better (albeit slowly), and will one day arrive at a utopia and software will help us get there, this article doesn’t help with that so much.
In the midst of heightened technological abilities, the basic problems of human depravity are exactly as they were a few decades ago.
Software can’t change our heart problem. That’s the biggest takeaway from this very well-written Wired article.
There’s a piece by Tom Warren at the Verge titled, Chrome is turning into the new Internet Explorer 6. When analyzing an accusation like this, you have to break it down into two parts:
- The actions of the accused
- The motives behind the actions
The facts are pretty straight forward. Internet Explorer 6 did not comply with web standards; it pursued its own standards in a myriad of ways. It wasn’t trying to create a roadmap for other browsers to follow in its footsteps. Warren lays this out well:
Ignoring web standards meant that developers started to code their sites around Internet Explorer specifically, and would recommend that their customers only accessed their site through Internet Explorer. Internet Explorer 6 existed for a full five years ignoring web standards and with a number of security flaws.
When we look at Chrome, it’s much different. Nobody’s writing code that’s Chrome specific. Instead, people are writing apps that are W3C standards compliant and that only happen to be currently implemented by Chrome. These apps are using bleeding edge technology that eventually all browsers will support (unless, like IE6, they choose to not follow the standards). In the interim, the developers are doing the right thing by recommending the browsers that support the necessary set of functionality that their apps require. It so happens that Chrome is the only browser right now. That’s not Chrome’s fault. Blaming Chrome for being faster with the trigger than its competitors is unfair.
Those are the facts. What about motives? Back to Warren:
“One issue is that Google developers often create many of the new standards, they are extremely active in new feature development for the web,” explains Jason Ormand, a performance engineer at Vox Media. “They write up proposals and get them through the working standards group, W3C, so that they become standards.” That often means Google is the first to ship with these standards, because the company has been advocating for them. Mix that together with a lot of developers using Chrome for web development and the issues are obvious.
Your presuppositions will determine whether you think Google has nefarious motives or not, and not all presuppositions are created equally; some are based on fact, and others on myth. More so than any other browser team, the Chrome team is composed of developers who are passionate about pushing web technology forward. They envision new tools that aren’t possible with today’s standards. They go through the appointed means, W3C, to change those standards. Then they implement them at the same time as the standards are being put together, while other browser developers are asleep at the wheel. When the new standards debut, only one browser supports them — Chrome. If you want to blame anyone, you should really fault the slower moving teams for the other browsers — Apple, Microsoft, and Mozilla. Who’s fault is it that a web app is only usable in Chrome? It’s not Chrome’s fault. Are you really going to fault Chrome for supporting a W3C standard? No. It’s Apple’s fault for being late to the game. It’s Microsoft’s fault. It’s Mozilla’s fault. Their developers are in the loop when any given W3C spec is being put together. They know it’s coming. They know Chrome will ship with it. Of course they know. But they procrastinate, because they do not think that it is important.
And here we are in 2018, with amazing and wonderful things like Service Workers that are currently only supported by Chrome and Firefox. It’s not Chrome and Mozilla’s fault that Apple and Microsoft are late to the game on Service Workers. It’s Apple’s and Microsoft’s fault. They have no one to blame but themselves for not allocating the developer talent that browsers deserve.
IE6 came to prominence because it was the browser that shipped with the Windows operating system. Chrome doesn’t enjoy that privilege; it doesn’t come by default on macOS or Windows. Chrome has to be manually installed. Chrome is in competition on an unequal playing field. It has an upstream battle to fight against Edge and Safari since they come pre-installed on their respective OS’s, and yet Chrome is winning. It has a majority of the market. The only possible conclusion you can derive from this data is that the majority of PC owners think that Chrome is the best browser available. If you disagree that Chrome is the best browser, you’re in the minority. Either everyone else is misinformed, or Chrome somehow has a magic spell over people, or — or — Chrome really is the best browser. To the victor belongs the spoils.
Chrome isn’t building a proprietary platform. Rather, it’s pushing the envelope for what can be done in a browser, and it’s achieving that through the open standards of W3C. Chrome is getting blamed simply for having a faster metabolism and caring more about the web than any other tech company. I don’t find those things to be blameworthy. It behoves the other browsers to double their efforts and catch up so they don’t keep losing more market share. The solution isn’t for Google to hit the brakes. That’s anti-progress. The solution is for the other browsers to get back in the game.
If the problem with IE6 was that it didn’t follow the standards, then Safari, Firefox, and Edge are the new IE6, in as much as they fail to support the functionality that modern web apps require. Chrome’s behavior is so different from IE6’s philosophy that comparing the two browsers is false equivalence.
There are two lessons to be learned from this:
- Always assume that your error messages will be seen by real users at some point, and write them accordingly. Think twice before being snarky, unless snarky is your brand.
- Consider putting your variable in the right hand of the assignment.1 There’s a reason most textbooks show
ifstatements this way, with the literal comparison on the left hand side and the variable on the right hand. If you do that, this sort of bug is impossible. If you use a single
=with that method, instead of shipping a subtle(ish) bug, you’ll get this helpful error:
Uncaught ReferenceError: Invalid left-hand side in assignment.
I’m excited to announce the 1.0 release of Yearly for iPhone, my first iOS app to see the light of day past my own hard drive. From its description page:
Yearly lets you systematically read your Bible in a year, with daily readings from both the Old Testament and the New Testament. It’s an incredibly simple app with just one screen, showing your reading for the current day as well as for the previous and next days.
Yearly also sends a notification every morning at 5:00 AM so you can know right from your lock screen what your reading is for the day.
I spent about 12.5 hours on the initial version. It’s all written in Swift and StoryBoard. The ecosystem of native iOS development is a pure joy, more so than any other platform or set of tools I’ve worked with. It has always felt this way, ever since I began dabbling in iOS development in 2013.1
From the perspective of someone who’s never submitted an app before, I’m impressed with how fast the iTunes Store approved Yearly. I submitted it on the morning of 28th, the first day the store opened after being closed for the holidays, and it was approved midday on the 29th.2 Apple isn’t joking when it says, “On average, 50% of apps are reviewed in 24 hours and over 90% are reviewed in 48 hours.” This held true even with whatever backlog accrued over the holiday.
I’m already planning on the interative improvements I want to make in the coming weeks, including the ability to choose different color schemes and reading schedules.
Systematically reading the whole word of God is as important and relevant as ever. It’s impossible to know what 2018 holds but I do know this: having a schedule to read through the Bible is going to make it easier to get through. There’s no news feed, no blog, no other set of books, that can serve as a substitute or take precedence over the Bible.
The busiest season on the App Store is almost here. Make sure your apps are up-to-date and ready for the holidays. New apps and app updates will not be accepted December 23 to 27 (Pacific Time), so any releases should be submitted, approved, and scheduled in advance. Other iTunes Connect and developer account features will remain available.
This cuts both ways. Because it was a holiday and I had some time off my normal work, I’ve been working on a little iPhone app. I can’t wait for the 28th when iTunes Connect accepts uploads of new apps.
seeforyourself, writing at MacRumors:
I’ve had my iPhone SE without a case/screen protector for over a year, and it never had scratches on its screen. I’ve even dropped the iPhone as a ton of times and it had no scratches on the screen itself.
My iPhone 8 plus though, has had a TON of scratches ALL over the display even before I’ve dropped it the first and only time. There are scratches running across the display and swirl scratches all over it, but the aluminum rimming is in mint condition.
My iPhone 8 has deep vertical scratches on it. You can feel them as you swipe your finger across the display. Several people I know with the 8 and 8 Plus have the same issue. There’s definitely something softer about this display.
Justin O’Beirne’s piece on how incredibly advanced and detailed Google Maps is getting is a must-read. It clearly makes the case that Apple Maps is far behind in this regard.
Here’s the thing though. I use maps for one thing primarily, and that’s to get from point A to point B. 99% of what I use maps for is that and that alone. I have to believe this is the overwhelming majority use case for most people. With that in mind, which is more important: that you can easily see on your lock screen the road you’re supposed to be driving on, or that you can count the number fan blades on the top of a random skyscraper in Chicago? Because on an iPhone, you can do the former in Apple Maps but not in Google Maps.
So in terms of actual use case, Apple maps is way, way ahead. And it’s this sort of “on-paper numbers versus reality” gut check that makes me skeptical about whether the future is really AI, as is so often popular to say these days. I’m not so sure that it is. The things that I do on a computer don’t benefit from AI. They do benefit from a well-designed interface, and Apple is light years ahead of Google on this. With the exception of Chrome, I can’t think of an app or platform that Google has made that is a delight to use. The “Google Maps Moat” is protecting a castle that nobody cares about. Maybe time will prove me wrong, but this is how I see it right now.
Lory Gil and Peter Cohen, writing at iMore:
Press the Command and Control keys on your keyboard. Then press the space bar. This will launch the characters palette.
Confession: heretofore I’ve gone to Messages and clicked the emoji icon, selected the emoji I needed, and then copied it to my clipboard to use in whatever application I needed it in. Great to know the proper solution.