How to create this lamp shape?

Hi, Could anyone please shed some light on how to create this lamp in Blender? I know how to do it in Rhino with Grasshopper, so I am really curious how it could be done in Blender, especially if it can be done procedurally. Much appreciated!!!

Edit:
The second I posted the question, I realized that I can use array modifier, with a constant offset on Z axis.
Here is what I got, but have not figured out how to make the top flat in a non-destructive way. (see next response, as I can only put one media in one post)

add boolean modifier i guess

Curve and array with offset is one way.
one_way.blend (656.7 KB)

Top faces as a vertex group shrinkwrapped on Z to an invisible plane above the lamp?