397 karma · joined October 3, 2016
I also do programming, especially embedded programming. Now it's called the "Internet of Things." Fortunately, the standards for security and reliability haven't changed that much relative to the history of embedded programming.
I am concerned that some customers are attaching things to the Internet of Things which should not be on the Internet of Things. Like cows. "Why can I not ping my cow?", one farm asks me. "Why did you put a cow on the Internet?!", I reply. They do not know, but Compliance says "because compliance," so now there's a cow on the Internet.
I am also concerned that NB-IoT is also going to be a thing in the near future. It's so cheap! It's so cheap, you can put cellular radios on all the things! Please do not do this. All the things do not need to run LTE stacks on energy harvesting SoCs forever and ever.
Complex embedded systems like your cellphone's baseband processor usually just give up at some point and suicide a task or even the whole OS if they detect a problem. For a while I had a Qualcomm debugger attached to the internal cell modem I had in a netbook I was working on, and the baseband crashed all the time due to hardware faults. I thought I had a bad chip for a while until I realized it never happened when I left it in an underground parking lot.
The lower end ones with cloud PVR look like they're crazy cheap, like a low end cell phone. I wouldn't be surprised if the IP only ones were $50 in Q10000. There's a bunch of implementation notes about fiddly expensive analog calibration for the terrestrial and docsis transceivers, but it looks like the two major ASIC vendors both ship turnkey calibration systems to help reduce manufacturing cost. One of them has a nice menu of prevalidated contract manufacturers that already have production lines ready to go once you sign.
Above a certain scale you kind of need an issue tracker, but when you're serving it instead of it serving you, it's the implementor's fault, not yours.
One of the reasons Jira comes up so much is that it's so customizable that it will merrily allow you to construct the most Byzantine nonsensical workflow you can think of, and fairly quickly too. It's not Jira's fault that someone told it to do so.
It really sounds like they couldn't find a manager capable of handling both teams, so they're going to throw technology at the problem instead of investing in their people to grow them into the position. It might work if they are willing to pivot quickly based on user feedback instead of just dropping New Process on you, but it's always slower to manage that way instead of just hiring a competent manager.
Oh wait, except Javascript. I don't know how frontend people manage to get anything done in that carnival funhouse ecosystem if they're not on drugs. Now that I think about it, the main frontend guy who did our coffeescript deprecation is kind of a pothead...
> use of a staging environment - is met with suspicion and doubt
If he doesn't want to give you authority to design the deployment pipeline, then he doesn't get to make you responsible for it. Responsibility/authority mismatch is a classic management mistake, they cover it in lower division business supervision and management classes. It's generally a result of one or more personality defects and/or something interfering with proper reasoning. If you can't get it fixed by figuring out how to work with the founder, then you need to find another job because it's only going to get worse as things ramp up.
Based on what you're saying about wanting more research and suspicion when presented with change, it sounds like they have Groucho Marx syndrome due to either a self-esteem issue or impostor syndrome. The usual line of reasoning is:
1. I need expert help. I will look outside my organization for it.
2. I hired expert help, and they are now working for my company.
3. It is self-evident that this person does not know what they are doing because they are working for my organization, and I have a low opinion of myself and/or my organization.
4. I need expert help.
Rinse and repeat.
I'm currently working with a founder who constantly pushes to master, and I didn't push back because he earned my trust by being a really decent programmer. He's broken things in the past, but in general he fixes things faster than I can detect them so I'm ok with it. The engineering organization doesn't have many complaints about it because the company needs him free to work on the hiring pipeline, which is crucial because our staff keeps getting poached.
If he was mediocre, I'd have privilege separated his accounts a long time ago and enabled annoying 3FA on his account with master commit privileges.
* Print copper mask onto transparency film using a laser printer
* Very carefully iron the transparency film, print side down, on a standard copper FR4 board
* Even more carefully, peel the transparency film back, and the mask should stick to the copper board (you might have to try a few different brands of transparency film for this to work)
* Mix 50/50 hydrogen peroxide and vinegar in a tub, put the PCB in but elevate it off the bottom of the tub
* Add salt until the copper starts coming off the unmasked parts of the PCB, and agitate the entire thing somehow (I use a busted cell phone with an app that makes the vibrator run continuously)
After a while, maybe an hour, you'll be left with an etched board, then rinse and scrub the mask off.
It takes some practice to get the quality level to the point where you can reliably make thinner traces on the board, but it's entirely doable for small quantities. I recommend doing 2x2 or 3x3 boards at a time so a few rejects are ok.
It's not the fastest or easiest method, but if you're really screwed and you need a board right away, it's possible to do this process with nothing but a Walmart.
In case I need to do SMT parts, I don't bother trying to make SMT traces using this method; I keep some SMT to DIP adapter boards around so I can just solder the DIP through holes onto one of these ghetto PCBs.
Although H2O2 and vinegar are both common household chemicals, the resulting bath is mildly corrosive to metals and apparently dental enamel, so treat it with some respect and neutralize it with baking soda before putting it down the drain. Don't throw it in your yard, it seems to sterilize any soil it comes into contact with.
I'm not entirely clear on the chemistry of what's going on here, but I'm pretty sure the oxidized copper residue left in the bath is low level toxic waste, so filter that out before getting rid of the bath chemicals. I let it dry out and I dispose of it at the battery disposal center in my building.
my-MacBook-Pro:production-web-site me$ grep ^gem Gemfile | wc -l
74
I have mixed feelings about this. On the one hand, the framework isn't strongly coupled, tested as a whole, and opinionated like in Java and .NET land.On the other hand, overriding the "default" Rails behavior for e.g. logging or SAML is pretty easy as long as you can find a gem compatible with the versions of all your other gems. This can easily spiral into out of control technical debt where you're stuck using gems from 6 years ago out of fear you'll tug on one of them and bring the entire house of cards tumbling down, but I've consistently been surprised at how little effort has been required to do gem upgrades as long as they're planned carefully.