997 karma · joined December 29, 2011
This is the root of your consternation. Like everything in our industry - experiment, build, then judge. I was a naysayer initially too. Then I tried React, Redux, styled-components, etc. and now I'm a believer. Combine this with modern CSS like Flexbox and CSS Grid and it truly is a golden age of web development!
2) Since it's in javascript, I can reference JS variables within the file. I can derive CSS values from props passed into the component: styled.div`color: ${props => props.userColor}`
3) I can extend other styled components' styles - i have a small shared library of central components like buttons, inputs. I can extend those: styled(MyThemedButton)`color: ${props => props.specialColor}`
4) I can use awesome micro-libraries like styled-system to add parameterization to the JSX elements: const Foo = styled.div`${space}`. ... <Foo key='1' mx={1} my={2} />... <Foo key='2' mx={2} my={3} />
5) I can change the style of every single styled component with a ThemeProvider. styled.div`color: ${props => props.theme.headerColor}`
6) I can see everything related to the component in one single file.
1) Store all this information, unencrypted
2) They were told of the vulnerability in March and had 2 months to update the software.
3) Afterwards, set up a broken website with a DV certificate to accept SSN numbers.
4) The website, even though was a vulnerability disclosure, tried to _sell_ an Equifax identity monitoring package.
5) Redirect your own customers to a phishing website set up by a white hat hacker
6) Allow employees to have usernames/pws like 'admin/admin' on edge servers
The circumstances that led to the vulnerability, and the actions that Equifax took afterwards absolutely warrant outrage. And this is not even taking into account the original point - this is a pattern of incompetence and failure - but to add to the fire, Equifax was a company that was tasked with storing highly sensitive personal data for millions of Americans and did not take the appropriate security steps to do so; in fact, they ignored even the most basic security measures. They should have had at least bank-level security with such a responsibility. There is no excuse.
Cryptocurrencies are (supposed to be) decentralized so having a large stake/hash power/etc. probably goes against that philosophy.
Saying it's easier to talk about things in China vs US. I've been to China and you can get thrown in jail for saying the type of things we say re. our political environment. My friends there have to speak in whispers in public while people in SF have no problem raging about our politicians.
And saying we should "allow people to say disparaging things about gay people if we want them to be able to say novel things about physics". At its least a really poor choice of words there. The choice of words makes it sound like it's okay to stand aside while they spout bigotry. Perhaps he meant it's okay to say it, but we should argue against it - but unfortunately for him that point was not made because the intention of the article was to support free speech. Bad example.
In big companies there are layers of 'management', including down to dev leads and tech/virtual leads who are devs by title. Knowledge of codebase/systems/deployment increases as you get down to the leaves. There are architects, release managers, product managers, etc. that should have provided multiple checks/balances. It's easy to point at "management" in big companies just as it is easy to point at "developers". But there's a whole bunch of nuances in the middle.
Either deployment was broken, the tests were broken, there weren't tests, or multiple of the above :\ anyway I'm hypothesizing but would love to see a post-mortem on this. How does a generally reliable company like Apple screw this up twice?
Agree, this is along the lines of what I meant. For example GCE ingress allows you to reference a global static IP while this is not possible with solely nginx ingress due to limitations with the TCP load balancer. There are separate ingress annotations for GKE/nginx/haproxy, etc. If I want to use the global-static-ip GCE annotation, this will make it a little harder to move to Azure.
I just hope that MS doesn't add in too many platform-specific pieces that would encourage vendor lock-in.
For example k8s ingress right now is based on controllers and GCE controllers support/don't support a wide variety of things compared to nginx ingress... these areas of Kubernetes make me worried about potential future switching costs.
I am embarrassed by what has become of some parts of the industry I love. For as much as Silicon Valley professes that it wants to "make the world a better place", you can also find
- social media websites that feed on people's addictions, almost forcing them to post and share as much as they can instead of simply enjoying moments in their lives.
- the proliferation of fake news; this one stings a lot. When I was younger the internet seemed like such an incredible learning tool. Many years later, walled gardens driven by algorithms intent on feeding narcissistic tendencies allow people to fall deeply into their own confirmation bias. This is a kind of 'anti-learning' that has developed out of FUD that is only getting propagated throughout all these social networks.
- big tech companies where employees are sold on "making the world a better place" but instead become completely dependent on attaining fake labels like "senior engineer" - and yet have never actually talked to a single user.
- games that are no longer fun, but are now environments deliberately set up to trap users in their own Skinner Boxes, pulling levers and pushing buttons to open loot boxes that slowly drain out their bank accounts
- the outright denial of many people in the tech industry that any of the above is a problem. Simply read through the comments on this HN page. Identifying that any of these things are problems is the first step in fixing them.
I haven't tried this out yet but I also would love to see Swift-like optional binding (if let...) While it's great if the C# compiler + intellisense could figure it out I prefer having different vars to differentiate nullability/non-nullability.
VIPER is terrible except for maybe 1% of projects - and those projects I envision having thousands of developers, dealing with legacy code, and fragile infrastructure.
I've seen companies actively avoid auto-layout and storyboards because "it messes up during merges", so then they turn to ridiculous code-based layout which makes it impossible for designers to work with. However all those storyboard format issues were resolved back in XCode 6 (or maybe even XCode 5). I think XCode 7 introduced storyboard references which allowed devs to work on decoupled storyboards without any possibility of conflicts.
Anyway what I've landed on for production apps is something closer to MVVM: Using Swift's protocol extensions for dependency injection without any frameworks, and having a view interface over the controller for testing business logic. There are other small tweaks, but for the most part, no crazy frameworks, no fighting the system.
I don't agree with the idea that you HAVE to use MVC. You should try out some of these ideas if you have the time/resources and see what works, what doesn't. Make the call based on team/time to market/skills/performance requirements/reliability requirements/etc.
If I'm writing a quick prototype app i'm going M(assive)VC all the way.
http://www.danielhall.io/a-swift-y-approach-to-dependency-in...
It sounds like these features go a long way toward addressing the concerns people had re. my parent comment. You can provide custom frontend or backend code with sacrificing too much of the power of Anvil.
I agree with you, but taking the create-react-app example again - I can very quickly scaffold a react app with necessary toolsets, built on top of webpack. This gets me up and running without having to mess with webpack config.
At some point, I need to break out of these opinionated guardrails and do my own thing. At that point create react app has an 'Eject' feature which opens up the black box and dumps all webpack configuration and scripts for me to hack away on. The Anvil tool seems to have something similar where you can grab all the sources, download, run, and publish it yourself.
For the last 15 years Microsoft has been putting out the same RAD tools, but based on ASP.NET/C#/Visual Studio. Things like drop-in provider-based OAuth, editing versioned database projects, WYSIWYG UI, etc. Publishing to the web, even the flow of clicking on a button to edit its handler looks like it was based directly on Winforms which is a 12 year old technology.
Why aren't there more of these things out there?
How much time now is spent learning the latest and greatest framework/toolkit/etc. only to spend more time configuring individual components and cobbling them together vs. just getting the product finished and published to users? I don't mean to be cynical but I wish there was some way all these different tools somehow built on each other instead of constantly resetting the dev stacks.
For example, Create React App - I'm constantly impressed by how it has eschewed configuration in favor of getting things done while still having a lot of flexibility. It draws on a lot of great, previous past projects and seems to define the train of thought for other react projects. It seems to me that people like Dan Abramov, Brent Jackson, and others are on the same wavelength which is incredibly powerful for the react community.
There should be a way for that sentiment to extend beyond React, into the database world, the IDE world so that we can collaborate and create more nice things like this.
If people apply, you can pick from those. I invited about 60 testers and had ~180 others apply. I was able to pick from that 180 set - and the reward goes only to them.
Also, before you start the test, you buy 'Beta' credits. You can choose to use these however you want, for example if you buy 50 beta credits, you can give a $5 reward to 10 testers, or a $10 reward to 5 testers. You can buy more credits as you go if you want to offer rewards to more testers.