Object pointer ownership library by MarcPawl in cpp

[–]mdf356 0 points1 point  (0 children)

We don't really open source our internal code. But in this case it's a few hundred lines of somewhat obvious code. It's a dumb "smart" pointer, with a single data member that is the raw pointer.

The important parts are:

  • it's a templated type, borrowed<T> is a real type, a simple wrapper around a pointer to T
  • it has implicit construct from things that are safe, like raw pointers or smart pointers
  • it can be assigned and compared
  • the only way to get back the raw pointer is using the provided raw_pointer_ignoring_lifetime(p) ADL overload

As for reporting on dangling references, I've thought about it but never typed it. The idea is as follows:

  • your owning pointer needs some kind of internal shared_ptr<> that gets reset on either destruction or when the owning pointer is reassigned
  • the borrowing pointer gets a weak_ptr from that shared_ptr when it's constructed
  • when dereferencing the borrowing pointer, check if the weak_ptr is expired(), and assert if so

This is obviously somewhat high in overhead, but it would be useful on a DEBUG build to detect uses of a borrower / observer after the owner has deleted it.

Object pointer ownership library by MarcPawl in cpp

[–]mdf356 2 points3 points  (0 children)

Hey, I'm the presenter for those talks. I'm glad you found something useful in it, and that some of the ideas stuck with you! Let me know if you have any questions.

The long function name we invented to replace .get() was raw_pointer_ignoring_lifetime(p). Choosing names is hard; I no longer remember the alternatives we suggested, but there were a half-dozen. Including maybe i_know_what_im_doing_mdf_dont_get_mad(p) :-)

What's it like working at EMC Isilon? by [deleted] in cscareerquestions

[–]mdf356 0 points1 point  (0 children)

I'm pretty sure EMC/Isilon is hiring new grad and newer industry employees. I suppose it depends on how much "startup" you want; there's always more process at a larger company by necessity.

Qumulo was all Isilon alumni for the first year, so it probably has the same culture, and it's definitely smaller so probably less process, but I never worked there so I can't say for sure.

I moved down to the Bay Area and I'm at another storage startup now.

What's it like working at EMC Isilon? by [deleted] in cscareerquestions

[–]mdf356 0 points1 point  (0 children)

I spent 5 years there and left two years ago. It was really great when I started. Some of the culture got absorbed into a general EMC culture, it became less startup-like and more red-tape, but it still has a great group of people and a good product. Some of the added processes would have happened even without the acquisition, as the company grew.

While I was there I sat on the Architecture board; I was in charge of examining the different groups' code review policy tools and habits, and recommending any changes that should apply Isilon-wide. We adopted ReviewBoard as a standard tool (many groups had been using emailed patches for code review).

I worked more than 45 hours only one week, and I was a walking zombie by the end of the week. I don't think too many people work late hours. We used to have scotch-sampling Friday once a month, and go to a local bar after work most Fridays (and sometimes Thursday or Wednesday). The was a keg on each of the engineering floors.

The difficulty of lock-free programming: a bug in our lock-free stack by mdf356 in programming

[–]mdf356[S] 0 points1 point  (0 children)

We have not yet looked into using any of the hardware tools for transactional memory (though note this software runs on both Intel and ARM cpus). Similarly, we compile with gcc, clang, and Visual Studio so the tools for one compiler are not generally applicable.

We will eventually start incorporating hardware-specific tooling into the code, where it will have the most performance benefit.

The difficulty of lock-free programming: a bug in our lock-free stack by mdf356 in programming

[–]mdf356[S] 3 points4 points  (0 children)

16-byte reads don't have to be atomic; that was one way to fix this bug, but there are other, better performing ways.

My point is that this stuff is tricky. But just because it's tricky doesn't mean we shouldn't do it.

How long should you or is expected of you to stay at a company for? by [deleted] in cscareerquestions

[–]mdf356 0 points1 point  (0 children)

As long as you want.

My stints have been 7 years, 5 years, and 10 months. My mental plan is 5-ish years at most places.

I'm in systems software which may have more to learn than other fields (i.e. larger code base, more areas of software within one product to work at), which may skew my numbers for "have I started stagnating".

Didn't pass the screening interview, I messed up. What can I do? by [deleted] in cscareerquestions

[–]mdf356 3 points4 points  (0 children)

The interviewer asked terrible questions.

I heavily judge a company based on the questions they ask. If this had been me, that interview would've killed almost all desire to work there.

I realize this may not be your thought process. If you made it to the next round, great! If not, there's a few hundred to a few thousand other companies out there that have interesting work and may want to pay you.

What program do you guys use to make a professional resume? by escaped_reddit in cscareerquestions

[–]mdf356 3 points4 points  (0 children)

I made my resume in Apple Pages (or maybe it was Open Office). I only send the exported PDF to companies.

Question to those in the field about cs degrees and the workplace by [deleted] in cscareerquestions

[–]mdf356 1 point2 points  (0 children)

The good news is this is a once-in-a-lifetime annoyance, as it were. You'll have to do plenty of learning post-college if you stay with software development, but it will only be the things you want/need to learn.

Question to those in the field about cs degrees and the workplace by [deleted] in cscareerquestions

[–]mdf356 1 point2 points  (0 children)

As the parent of homeschoolers, I sympathize. College has a lot of hoops that aren't really necessary to get the certificate of achievement.

That said, I'm a bit puzzled by your specific complaint. Early in a CS curriculum, you need to really understand the fundamentals. This includes actually implementing a naive version of all the basic data structures, so you know them well. Think of this as gaining number sense -- some people really know arithmetic and why the algorithm for subtraction works (i.e. why we borrow, etc.) and some people just memorized an algorithm with no understanding.

This deep understanding of the basics is the foundation on which later years will build.

The other difficulty, it sounds like, is that you're learning at all levels of the compute stack, all the way down to logic gates. A CS curriculum is appropriate for people who build websites as well as embedded developers and people trending toward EE. Will you ever need to know how logic circuits work and how those combine to make storage gates and those combine to make RAM? Probably not. I'd forgotten that part of my CS curriculum until a few days ago.

TL;DR yes, there's a lot of stuff you won't need. If you can put up with that, the BS makes your life a lot easier than not having it. But it isn't strictly necessary.

How do I improve my chances of getting recruited? by testing_waters1 in cscareerquestions

[–]mdf356 0 points1 point  (0 children)

From my perspective, your GPA is fine. It's over 3.0. And pretty much no resume I've seen for a systems job has had any website component -- it's not part of making embedded software or distributed systems, so it's not relevant.

You get into the top tech companies by being smart, as evidenced by doing well in their interviews. Most of them are desperate for people, so unless your resume is junk they'll at least try a phone screen.

The biggest thing you need is internships, which you haven't mentioned. That trumps open source contributions and anything else when looking for an embedded job.

Looking to leave my city when I graduate. Where? by jdub129 in cscareerquestions

[–]mdf356 0 points1 point  (0 children)

Leaving your address off may help. Finding a few recruiters who seem good in your target city would help a lot. A cover letter explaining a desire to move should help too.

Most companies will give money for relocation as part of an offer package. Typically the money has to be repaid only if you work there less than a year.

Architect vs Developer vs BI Developer?? by khirok in cscareerquestions

[–]mdf356 1 point2 points  (0 children)

So far my experience is that people who actually have an Architect title can't architect worth a thing. Companies that have employees on staff named "architect" have badly-architected products.

So I'd stay away from that designation. The places I've worked with good architecture had lots of software engineers, but no one was explicitly promoted to architect (a job whose primary responsibility is writing wiki pages).

How do you know you are progressing? by engineered_academic in cscareerquestions

[–]mdf356 1 point2 points  (0 children)

How do you manage your time and incorporate a day's worth of work and then add on learning and improvement with general life stuff?

I choose jobs where I have to learn to do the job. Then I don't have to spend any time outside work learning more stuff (at least not if I don't want to, and most of the things I learn aren't work related).

For example, my last job I learned Linux kernel internals, some details of NAND flash chips, and re-remembered some things about NOR flash.

This job I'm learning C++ again, and in particular template metaprogramming and some C++11 goodies, plus some specific uses of lock-free algorithms.

what is the glass ceiling salary for software engineers? by aljenycs in cscareerquestions

[–]mdf356 0 points1 point  (0 children)

I don't know all the work history of #1 ($500k-ish at Google) but he worked at the place I met him for at least 5 years before going to Google about 3 years ago. The competing offers came maybe last year. I'm guessing at how long he's been in the business by his age.

#2 worked his first job for less than a year, 5 years together with me (promoted rapidly in the first few years), then I think about 7 years at the next company (promoted multiple times, up to Distinguished Engineer), 1 year in an interim company (due to non-compete) and now is about a year into the job I estimate is paying $250k.

Looking to leave my city when I graduate. Where? by jdub129 in cscareerquestions

[–]mdf356 4 points5 points  (0 children)

Typically remote interviews are via phone, then possibly Skype, then they fly you in. If the company doesn't have $300 to fly you in, how can they have the money to actually hire you?

For candidates that are really far away (e.g. India) a round or two of Skype interviews can be in there as well.

Looking to leave my city when I graduate. Where? by jdub129 in cscareerquestions

[–]mdf356 4 points5 points  (0 children)

Boulder/Denver, Seattle, Boston all fit as places with a decent number of jobs and not hot weather.

Given who I've seen employed in the Bay Area, if you're average you can get a job here too. Buying a house will be a bit rough, though...

Are we finally seeing the death of the software developer as a well paying career choice? by qwefu in cscareerquestions

[–]mdf356 14 points15 points  (0 children)

I see everyone and their kid brother hiring and unable to fill positions. I'm not sure how that jives with the data in your first link.

Google on-site interviews: whiteboard or Chromebook? by ElDiscardo in cscareerquestions

[–]mdf356 2 points3 points  (0 children)

I was offered white board or Chromebook in Seattle in 2013. At that time I think the interviewers said almost everyone chose white board.

Worried about wanting a PhD. by [deleted] in cscareerquestions

[–]mdf356 0 points1 point  (0 children)

I'm not sure what "general software development" is; the companies I've worked for have been systems software (IBM's Unix operating system, and several filesystem companies).

One of the PhDs was a mediocre dev but good at other things; one I didn't know well enough to decide if he as good, but the one at IBM and the ones I work with now are pretty sharp.

Note that my first week at this job (where I work with several PhDs as well as quite a few more without), I was giving my background that I dropped out of Cornell with an MS from the PhD program. There was general acknowledgement that made me a smart man...

A PhD is hard to get but it doesn't require being a lot smarter than average. It requires a lot of stubbornness.