198 karma · joined September 23, 2010
However, AppDynamics and Duo seem to be doing well at Cisco from what I can tell. I think observability and security tools are a good match for Cisco and bundle well with hardware. For this reason, I’ll bet Splunk does reasonably well under Cisco too.
Decoupling compute and storage is definitely the way to go. We’re using Lambda functions and ECS Fargate containers for compute that scales up and down rapidly, and S3 for storage. Getting ~1TB/sec log scan speeds, which feels fairly good. We keep sparse indices in S3 to narrow down regions of logs to scan. Eg. if you’re searching for an IP address that appears 10 times in a 25TB log set, the indices reduce the search space to around 300MB. Takes a few seconds to complete that query, whereas Athena and CloudWatch take like 20 minutes.
We’re also using Rust to maximize memory efficiency and speed - there are lots of great SIMD optimized string search and regex libraries on crates.io.
We’re early, so there are a lot of SIEM features like detection rules that we are still building. But Splunk/DataDog users might find it useful if costs are a problem and they use mostly log search:
Had a pricing question. Say we connected a log forwarder like Vector to send data to Clickhouse Cloud, once per second. If each write unit is $0.0125, and we execute 86,400 writes over the course of the day, would we end up spending $1080? Do you only really support large batch, low frequency writes?
100% agree. We had a C++ service that made heavy use of libcurl. A particular release of libcurl introduced some memory safety problems that caused frequent segfaults for us. These memory safety bugs were eventually fixed in another release, but it scared us enough that we investigated rewriting the service in Rust.
After successful experimentation with some prototypes, we eventually rewrote the service in Rust, auditing the unsafe code in our dependencies (of which there was very little). No segfaults ever since.
Side benefit: Since Rust networking libraries tend to have strong async support, and since some of our C++ libraries performed synchronous networking operations, we saw a big improvement in performance. The number of threads needed dropped by 5x.
I appreciate that Ousterhout tries to support these principles with some data from his own experience (building Tcl, RamCloud where Raft consensus was discovered, etc) and from code reviews of student projects in his design course, but he admits that there is a lack of data about things like design.
Sample principles from Ousterhout:
* When developing an interface, favor exposing a small number of functions each with deep functionality over exposing a large number of functions each with shallow functionality. For example, favor Unix file I/O interface (open, close, read, write, unlink) over Java file I/O interface (File, FileReader, BufferedReader, FileWriter, BufferedWriter, FileNotFoundException, ... etc.)
* When choosing between keeping your code specific and keeping your code general, favor "somewhat" general. For example, instead of exposing "deleteNextCharacter(text, pos), deleteNextWord(text, pos), deleteNextSentence(text, pos)", just expose "delete(text, pos, length)" and let the caller use it how they will.
Makes me wary of trusting other big OS libraries, but since rebuilding every part of the stack from scratch is infeasible and unproductive, we don't have much choice but to use them.
Technical announcement:
Severe security vulnerability found in Apache Struts using lgtm.com (CVE-2017-9805):
https://lgtm.com/blog/apache_struts_CVE-2017-9805_announceme...
- 6am work at home
- 8am work at office
- 6pm dinner with family at home, or cheer at kids' athletic events
- 8pm work at home
- 11pm or 12am, sleep
- In early days, he slept on couch near computer to take customer support calls at night.
It wasn't until I was older that I realized how much my family was prioritized.
That said, my mom wanted to be a full time caregiver and did an amazing job of it, so his caregiving responsibilities were not nearly as extensive as my mother's.
Great point about the warping issue in my demo. I use a solver to produce a quadratic polynomial that maps in-angles to out-angles. I feel like the coefficients produced by the solver don't fit the data very well for pixels far away from the black hole, resulting in zooming / warping. I'm going to dig into it a bit and see if I can produce a better polynomial.
UPDATE: Just made a quick change. The solver was only attempting to match data up to, but not through, the FOV limit, which meant that the polynomial did not fit data near the FOV limit very well. I updated it so that it now uses data up to and beyond the FOV. There is still a bit of warping for far away pixels, but there is substantially less than before. Thank you for the tip.
I created a simple wristwatch accessory that was scripted to upload a copy of all of your chatbox text to an external service. Later, you could log in to this external service and search through a history of all of the conversations your character ever overheard.
Real-world versions of this technology appear inevitable as digital storage costs trend to zero. A rudimentary digital copy of the physical world is being created in services like Google Maps. The Google self-driving car records a 3D copy of its surroundings with accuracy at the centimeter level. Dropcam uploads video and audio data from within your home to cloud storage.
A world with fully recorded life experiences seems creepy at first blush, but I believe we'll discover a mechanism for trust that will allow everyone to safely record a digital copy of their lives that is inaccessible to third parties. Perhaps in the future we'll each own an open-source private cloud container of CPU and storage resources. Instead of processing your data on external servers, third-party services might provide code that runs in your own container under tight network permission restrictions. Such a system might be able to maintain the benefits of continuous software deployment while allowing consumers to keep their data under their control.
[1] http://www.xconomy.com/san-francisco/2013/04/23/dropcam-ceos...
[2] http://techcrunch.com/2014/06/20/google-and-nest-acquire-dro...
If I were in your situation, I'd do two things. First, I'd write a list of 10 ideas to make my career really fun. This list would probably describe companies to interview at and projects to pursue. Second, I'd write a list of 10 ideas to make my current job really fun. This might require some extreme creativity, but it might be better to make a possibly futile attempt to enjoy the current job while working on finding the next one than continue to waste away in misery.
Here are a few crazy ideas that come to mind. Your ideas will be better:
1. Make a bingo board where each square is a common annoyance you encounter in the code. Share combinations of the bingo board with your co-workers. Give a candy bar to whomever gets bingo first.
2. When faced with an annoying task, set a countdown timer and do everything you can to finish the task before the time runs out. Don't let the bomb explode.
3. Stand up and do a fist pump every time you make an especially clever commit.
4. Listen to music that is fun.
5. Periodically listen to comedy that makes you laugh.
6. Think of the people you admire or respect in your workplace. Try to meet with them and learn from them. Give back to them too - perhaps by giving them ideas that you think could possibly help them in their projects, or introduce them to people you know who could help them.
7. Bring in snacks or some particularly tasty treats to share with your co-workers. It might help build some emotional connection and friendship.
8. Bring a bag of M&Ms and eat one every time you save a file.
9. Try working for an hour using only one hand.
10. If you're in an office setting where talking out loud won't bother other people, try narrating everything you do during the work day like how YouTube stars narrate playing video games. An immensely talented engineer I knew at an internship would sing rap lyrics all morning and swear vigorously at his machine when things went badly wrong. It was ridiculously entertaining.
Best of luck making your career more enjoyable!
With more of our lives occurring in the inexpensive digital world, perhaps we'll be less concerned with the expensive physical one and thus less concerned with working for money.
1. Find work that you enjoy doing more than 4 hours per day. 2. Learn to love what you do for work.
In the healthy romantic relationships I've seen, partners fall in love, but they also choose to love one another. I wonder if loving work is similar. There is a lot of rhetoric encouraging people to follow their passions to find the jobs they love, but there is little rhetoric about choosing to love the job you have. It's important not to delude yourself that a horrible job is lovable, but it's also important to notice all of the positive aspects of a job and how you can use it to grow and give back.
This quote summarizes the results well:
"Although the teammates were not looking forward to working in close quarters, over time they realized the benefits of having people at hand, both for coordination, problem solving and learning. They adapted to the distractions of radical collocation, both by removing themselves to nearby hotelling areas when they needed privacy, and by zoning out, made possible because of the distance between people in the larger rooms."
It feels productive to enter a flow-like state for several hours debugging a problem, but it's probably more productive if a teammate notices and provides the solution in minutes. Nevertheless, stretches of uninterrupted focus are often essential.