
Show HN: Bvckup 2 – Simple Fast Backup for Windows - latitude
https://bvckup2.com/?hn
======
latitude
Author's here. A bit of a background on the project if I may.

I wrote the original version several years ago. It was purely for myself, to
automate the way I was doing the backups at the time. I also threw together a
website and put it online, just because and with no hope that something this
simple would be in demand. Then went on doing other things like having kids
and what not. Fast forward to 2012 and there's a couple of thousand people on
the mailing list and a trickle of emails asking when an update would come out.
So I sat down and did a proper rewrite. I thought it would take 2-3 months,
but it took almost a year. And a half. The breadcrumbs of the process are over
on the /wip page [1]. You might've seen it as it was on HN some time ago.

The app is notable for three things - (1) it has a single, simple purpose (2)
it is light and _very_ fast and (3) it has an _excellent_ UI.

Also of some interest - I ran a 12-month long beta. Started with just 100
people testing private builds for 6 months and then moved on to a public beta
for another 6, altogether yielding about 15,000 installs. If there's a single
takeaway from the project so far - a beta this long is _incredible_. It helps
shaping the feature set like nothing else and it flushes the most obscure bugs
that no formal QA could ever find.

    
    
      ---
    

By the way of introduction - I come from the system programming background. I
spent several years writing firmware for network appliances, I wrote a P2P VPN
system from scratch and I generally prefer C to Java if you know what I mean.
I also get a major kick from doing visual design for my projects and got 2000
followers on Dribbble to prove it :)

    
    
      ---
    

In any case, there you have it - my take on simple backup software. Let me
know what you think. Thanks!

    
    
      ---
    

[1] [http://bvckup2.com/wip](http://bvckup2.com/wip)

~~~
hnriot
not sure why you claim it has an excellent UI, it's a very simple UI with the
usual toolbar (who has those anymore? I guess that's a Windows thing.) To me,
it looks like one of the basic autogenerated MFC apps with a toolbar and list
view that I made dozens of in the 90s. I guess I'm spoiled on a Mac and don't
need additional tools (or UIs) on Linux.

~~~
kibibu
This IMO has a much better UI than TimeMachine's. It lets you see all your
backup tasks in one spot, rather than having to "Select Disk", and it has 100%
less space gimmick.

------
dufferzafar
This is probably the nicest looking Windows application I have seen in a
while. The website is pretty slick too. This is the kind of detail that you
usually get to see for Mac applications. Great Job. Seriously.

Right after I saw the animated details (you know, the one that pops up when
you click "Change") I wanted to see its source code :/

Can you please tell us what language? and/or 3rd party controls are you using?
Please?

I'm guessing it might be on the work in progress page but the page looks too
detailed, so I have bookmarked it for when I have more time than I currently
do.

~~~
latitude
It's in C++, but closer to the C than to ++. The UI is done in a thin wrapper
framework that runs directly over Win32 API. Custom controls, animations, etc.
- all's from scratch. It's all much easier than it looks, just need to let
MFC/ATL/XYZ go :)

~~~
mmastrac
I always thought that of all the Microsoft "frameworks" ATL and WTL were the
best thought-out and most useful, and reasonably lightweight. I never really
got the hang of MFC, but WTL clicked very quickly for me.

------
sciurus
This may sound strange, but I don't understand how I'd use this for backups.
It seems like all it does is sync one folder to another, potentially in
realtime. That's essentially RAID1 at the filesytem level, but RAID isn't a
backup! What if I accidentally overwrite the contents of a file; how would I
recover the previous version?

~~~
latitude
There are backups and there are backups.

For some people, like yourself, archiving backup is the one true backup, while
others make do with rolling hourly/daily/weekly backups or even something as
rudimentary as copy-pasting folders by hand. Ideally, yes, everyone should be
doing versioned backups to a zfs storage cluster. In practice, no, lots of
people have just enough motivation to get an external drive and start making
copies onto it.

That said, I am planning to add versioning and I am looking at adopting git's
packfiles for that purpose. The idea basically is to use an open format for
storing archived versions, so not to lock in the users. This is in its early
stages, so it may or may not work out.

~~~
sciurus
Actually, I was thinking of rolling hourly/daily/weekly backups and I didn't
understand how I would set that up with your program. Would I have to sync the
same source to multiple destinations on different schedules? That seems
inefficient compared to e.g.
[http://www.mikerubel.org/computers/rsync_snapshots/](http://www.mikerubel.org/computers/rsync_snapshots/)

Please don't get me wrong, I'm not trying to denigrate the software you've
written! I was just surprised to see it marketed as a backup tool instead of a
file synchronization tool.

The git packfile format is neat; I'm sure you can get some inspiration from
[https://github.com/bup/bup](https://github.com/bup/bup) (which uses it) and
[http://obnam.org](http://obnam.org) (which has it's own format).

~~~
latitude
Why is it that you are surprised to see it marketed as a backup tool?

I know about _bup_ , thanks.

~~~
thaumaturgy
We occasionally get questions from clients about using some file sync tool or
another for their backups, and we are very firm with them: _file sync is not a
backup_.

It looks like your software protects to some extent against accidental
deletions of files, which puts it far ahead of most file sync tools. But, if
it's still possible to accidentally delete the contents of a file or otherwise
corrupt it, then it's not a backup.

We usually end up recommending Acronis TrueImage, which is in the same price
range as your software. I'd happily recommend your software instead, since
TrueImage is clunky and slow, but without archiving it doesn't count as backup
software.

(For one real-world example: we had a corporate client get hit by
Cryptolocker. It looks like in this case your software would've automatically
copied the changed files over to the backup directory; is this the case, or am
I missing something?)

~~~
latitude
This reminds me how every time someone posts a salad recipe to /r/cooking the
whole discussion inevitably converges to the topic of a salad without a mayo
not being a real salad ... just as it is not a salad _with_ the mayo :)

Every backup has a set of risks that it mitigates. If the goal is to mitigate
human errors, then, yes, versioning/archiving is a must. However if someone
just needs to have a daily snapshot of their photos and documents to protect
them against fire of theft, then you can certainly call it a file sync, but it
still _is_ a backup. To each his own. "Backup" is not an exact term, but
rather a range of data protection techniques.

All that said, the archiving is coming up.

~~~
thaumaturgy
> _" Backup" is not an exact term, but rather a range of data protection
> techniques._

We're trying to narrow the range of things that people consider a "backup" so
that they don't get wildly disappointed in the future. This isn't a matter of
taste.

> _All that said, the archiving is coming up._

Fantastic!

~~~
latitude
> _We 're trying to narrow the range of things that people consider a "backup"
> so that they don't get wildly disappointed in the future_

Aye, I totally hear you.

------
tobias3
I'm most interested in the delta copying. After a little bit of research in
the forums I'm guessing you save block hashes of full copies and then compare
the source blocks to the block hashes and copy only if they differ. Or does
the app install a driver to get the changed blocks in files without rereading
the whole file?

~~~
latitude
It's former. It splits files into blocks (defaulting to 32KB, but that's
configurable), computes hashes (two separate hashes per block) and stores them
in a file in the backup config directory. These are used to detect modified
blocks. It also computes a hash of an entire file and stores it in the same
hash file. This is used to hedge against false negatives with modified block
detection. The original version (from '09) didn't use the full-file hash, so
it resorted to re-copying files in full after several incremental updates.

~~~
kijin
Is the full-file hash actually faster than re-copying the whole file?

Re-calculating a full-file hash will require reading the whole file anyway.
Which will take around the same amount of time as re-copying the whole file,
since the sequential write speeds of most HDDs and non-entry-level SSDs are
similar to their sequential read speeds. The only benefit would seem to be
that your SSD might last a bit longer... but how many consumers use SSDs to
store their backups?

Please let me know if I'm missing something.

~~~
latitude
Yes, it is faster.

------
donniezazen
I have been thinking about my own backups for some time. Do you guys prefer
rolling your own setup for full system backup or use services like CrashPlan?
Do you guys trust services like S3/Glacier? When backing up your system do you
bar specific files from being backed up like GPG/SSH keys, etc.?

~~~
balladeer
I'm in the same situation. I use CrashPlan but I've heard CrashPlan has failed
in the past so I just wanted another layer of security. I was thinking of
finding some app like Tarsnap (and it should work with Glacier) that handles
de-duplication really well.

I had read that Cyberduck can be used to backup to S3 and in-turn we can make
a "rule" in S3 that after "N hrs" data in S3 should be sent to Glacier. But I
don't how much price difference does it cause or whether we can directly back
up to Glacier at all.

Duplicity is another thing I might want to explore. But absence of even a
minimal GUI makes me a little uncomfortable.

~~~
donniezazen
These are all good tools but I am worried about using Amazon's infrastructure.
They would gladly hand over your data.

~~~
balladeer
Actually you can encrypt that data on your end.

------
steven2012
Do you do byte-by-byte comparisons between the original and backups to makes
sure nothing was copied over incorrectly? This is my biggest worry is that I
back something up and the backup has bit errors and it's essentially ruined
but I won't know until I try to recover it.

~~~
latitude
This - backup verification - is one of few outstanding features that I will be
adding shortly.

------
czam
How does it compare to
[http://freefilesync.sourceforge.net/](http://freefilesync.sourceforge.net/) ?
Apart from the delta copying the feature list sounds similar. I find the
FreeFileSync UI quite usable.

~~~
latitude
Faster bulk copying, lighter build, lighter on resource usage, removable
device tracking, much better UI (it's subjective, of course, but just try it
out and see for yourself). Formal backup planner, dry runs, native support for
running as a service with separate engine and UI processes.

    
    
      -- edit --
    

Let me give an example of what I mean by "much better UI".

Bvckup 2 has a _hierarchical_ log viewer [1] and this thing does an absolute
wonder for usability. Essentially you can go from a backup run summary to the
specifics of a failure in a matter of 2-3 clicks without being overwhelmed in
the process.

The issue however is that it was a total bitch to implement so that it
wouldn't require keeping an entire log in memory at all times. See, if the log
is flat, it's easy to display its relevant part by looking at the scroll
position and then rendering respective chunk from the log file in a window.
But once you have a tree, determining which item is _visible_ becomes a hard
problem, because random nodes can be opened and closed. Consider the case when
you have a million-item log and, say, 15% of the nodes are closed. Moreover,
the visibility look-up needs to have a real-time performance, because the
window needs to respond in real-time to user dragging scroll button up and
down. So, behind the scenes, this hierarchical log viewer is backed by a
double-indexed b-tree index file - a construct that that has no prior art and
that took me several weeks to converge to and to implement [2]. It could very
well pass for a modest PhD thesis in a smaller university :)

So, I mean, there are smaller simple-looking differences between bvckup's UI
and other apps, but the thing is that they are sometimes _really_ hard to
implement. They do however improve the overall UI experience quite a bit.

[1] [http://bvckup2.com/img/r8/screenshot-3-log-
viewer-2.png](http://bvckup2.com/img/r8/screenshot-3-log-viewer-2.png)

[2] [http://bvckup2.com/wip/#27012014](http://bvckup2.com/wip/#27012014)

~~~
kilburn
> It could very well pass for a modest PhD thesis in a smaller university :)

This may be a bit far-fetched. Some might even say disrespectful to the bulk
of PhDs out there, who typically worked several years (not weeks) to complete
their dissertations.

From properly relating to current state of the art, to actually developing
multiple (not just a single one) techniques improving it, and finishing by
properly presenting all that work in a scientific manner: your nice trick has
a long way to passing as a PhD.

EDIT: Ok, I didn't get the playful tone. Sorry.

~~~
graycat
A common standard for a Ph.D. dissertation is "an original contribution to
knowledge worthy of publication", and the usual standard for publication is
"new, correct, and significant". The length of time devoted is not part of the
criteria. Maybe can do the work in a weekend; maybe take years.

When I was a grad student, at one point I took a 'reading course'. A paper was
required, maybe just expository and not necessarily original. I started with a
problem seen but not solved in a course. I hit the library and saw no
solution. In an evening I got some rough ideas for a solution and then
proposed solving the problem as my 'course'. A prof looked at the problem for
a weekend, didn't see a solution, and agreed that the problem was significant
enough. We shook hands. Then immediately I outlined my first cut solution.

Then in some pleasant evenings for two weeks, sitting with my wife on our bed
as she watched TV, I found a good, clean, solid solution. In addition I
discovered a new theorem comparable with the famous Whitney extension theorem
and applied it to solve my problem and, also, produce some curious additional,
new results. I also found that I'd solved a problem stated but not solved in a
famous paper in mathematical economics by Arrow, Hurwicz, and Uzawa. Poor
Uzawa -- apparently so far he has yet to get his Prize! I published the paper
in JOTA, right away, with no significant revisions. So, about four weeks of
pleasant, not very hard, work, and I'd met the formal requirement for a Ph.D.
dissertation. I used another piece of work I'd done for my Ph.D. dissertation,
but that paper did 'polish my halo' in the department.

Net, length of time is not one of the criteria!

------
highace
A simple product with a great looking UI and marketing site. You're gonna
crush it.

------
laacz
It would be nice if you'd specify on pricing page [1] what is the price for in
sense of time - a month? a year?

[1] [https://bvckup2.com/purchase/](https://bvckup2.com/purchase/)

~~~
latitude
Erm ... it's an installable standalone program. The price is for lifetime. I
thought it was obvious.

~~~
zerd
Per install, machine, user or household?

~~~
latitude
Per install, with progressive discounts based on total volume.

------
titraxx
Great application ! It's functional and beautiful.

As a little experienced developer (still a student), I find you Work in
progress page very interesting and full of useful tips and information !
Moreover it shows all the work done on this app (especially concerning the
UI).

You have a lot of concerns about the UI design, do you have any books or
online resources concerning application UI that you really like you'd want to
share ?

Thanks

~~~
latitude
Thanks, and, no, I don't, sorry. It's just a matter of observing how other
people do it and then improving upon it by good old trial and error.

------
bithush
Lovely looking application. The animations are super smooth. Would you mind
sharing what technologies and tools you use? Also, and this is a strange
request but this is HN! but what editor theme and font are you using in this
screenshot? [http://bvckup2.com/wip/tree-db.png](http://bvckup2.com/wip/tree-
db.png)

~~~
latitude
It's C++ on top of raw Win32 API with very light use of actual ++ features and
no external dependencies except for Windows SDK. About 75KLoC in libraries
(UI, RPC, event loop, tasklets, etc) and 90KLoC in the app itself. The IDE
font is one and only Dina -
[https://www.donationcoder.com/Software/Jibz/Dina/](https://www.donationcoder.com/Software/Jibz/Dina/).

~~~
bithush
Ahh yes Dina! I tried it out long ago but have been using Consolas since its
release. Just installed Dina and I have to say it looks rather lovely at 8pt
on a dark theme! Is that a custom theme you have in VS or something from
vsstyles?

The animations in Bvackup are very OS X like. They are beautiful. It has been
a very long time since I clicked a button in a Windows app and went "ohh that
is sexy!" haha. Also your /wip is very interesting. The level of detail is
impressive. I ended up spending about half an hour reading every entry.

Are all the animations completely home baked then?

~~~
latitude
It's not a theme, just some basic color palette with green for preprocessor,
yellow for keywords, cyan for string and numbers and white for the rest. Dark
gray for the comments.

Re: animations - yeah, they are all custom, but there's not really much to
them. The hardest part was to do _flickerless_ fade-ins and -outs, the code
for that just ain't pretty. Window transformations are just DeferWindowPos
with the right combination of flags and a bit of painting cooperation from
custom controls. Still though... the amount of work required to get these
animations working was ungodly compared to $('div').animate({ ... }); :)

~~~
bithush
Yeah I can imagine. Win32 was never designed for animations like that :) You
appear to have done a pretty remarkable job though as they are some of the
best I have seen in Windows outside of things such as WPF. Well done!

Do you blog at all? I imagine you have some very interesting things you could
talk about in regards to Win32 programming. Understandably there are fewer and
fewer pure Win32 developers these days and even fewer who take the time to
really make a Win32 application look good.

Purely for personal curiosity I have decided to learn C (and most likely C++
as well) as I have no real experience with native development and it is
something that has always bugged me. Would it be incredibly rude of me to
maybe shoot you an email for a little chat one to one? I totally understand if
you are unable too. Thanks!

~~~
latitude
* Whoops, thanks, my brother's tablet :-/

No, sorry, don't blog and can't mentor you. I just don't have time for either.

~~~
bithush
No problem, I totally understand. Best of luck with Bvackup.

PS I realised you are the guy behind Hamachi. I used that a lot a while back
so thanks for that also!

------
nmussy
I know this isn't the main purpose of the software, but has there been
experiments with a bvckup being restored on a different piece of hardware? I'm
not talking completely, changed the CPU and architecture, but more like
different drive sizes and such.

~~~
latitude
It's a file-level replicator, it is just not meant for system/image backups,
because those need to be aware of MBRs, partition tables and other non-FS
elements.

~~~
nmussy
Yes, that's what I feared. I might start using it at work, in association with
CloneZilla, the latter for deployment, and yours for user's data safety.

Thanks for the reply!

------
Gobiel
I have looked for libre alternatives and Duplicati seems to do the job quite
well, and is in current development:
[http://www.duplicati.com/news](http://www.duplicati.com/news)

------
StavrosK
Shouldn't it be "backvp"?

~~~
latitude
Let's not go there. I wish I named it something else. It was a dorky name for
a toy project, who'd knew it would get any traction.

Incidentally, I do own backvp.com.

~~~
marcoms
Does anyone know what the "v" means? Svbtle, Bvckup, Backvp... Is it supposed
to be pronnounced like a "u", and just why use it in the first place? No
disrespect.

~~~
latitude
It was an exercise in quirky branding on my part -
[http://bvckup.tumblr.com/post/3283335299/how-bvckup-got-
its-...](http://bvckup.tumblr.com/post/3283335299/how-bvckup-got-its-name). To
my excuse it was almost 5 years ago, long before using "V" in place of a vowel
became mainstream. And, in retrospect, I should've picked something a bit more
pronounceable.

In Svpply and Svbtle it simply stands for "u", which is a deferral to how
Romans would've written it.

~~~
Flenser
It's a happy accident, but I'd assumed it was because b,v, and c are right
next to each other on the keyboard, making the first 3 characters before it
autocompletes easy to type.

------
yRetsyM
This website is inspiringly simple

------
thisjepisje
What (if any) is the difference between the free download and the 20 dollar
version?

~~~
latitude
If you are referring to the "last beta", then it's just what it says on the
tin - it's the last of beta releases, meaning that it's unsupported and it's
the end of the line, feature-frozen since mid May, no updates. The exact list
of differences is over at [1]. The reason the last beta exists is that the
beta period was quite long and there were people who got used to using the app
for free, so that version is for them (though all beta users got 50% the
production version).

[1]
[http://www.donationcoder.com/forum/index.php?topic=36388.msg...](http://www.donationcoder.com/forum/index.php?topic=36388.msg359280#msg359280)

~~~
thisjepisje
I'm referring to what you get when you click the download button at the top of
the page. So that's the last beta?

~~~
latitude
No, that's the actual app. As it says right under the button -

    
    
        Two-week unrestricted trial
      Anytime upgrade to paid status

~~~
thisjepisje
Ah I see. It says so under the button at the bottom of the page, but not under
the one at the top.

~~~
latitude
Oh, good point. I totally missed that, thanks.

(Edit) Better now?

~~~
thisjepisje
Yeah now it's perfectly clear :)

------
heyimwill
What a great looking website!

~~~
zo1
What _exactly_ do you mean? It looks quite similar to all the numerous
bootstrap.js websites out there. Not that I'm saying it's bad, or anything...

~~~
latitude
Care to show some examples?

